我的EntityManager将数据持久/提交到Postgres数据库没问题。但是,它所造成的联系在交易中处于空闲状态。这是我的代码:
public User create(User user) {
if(logger.isDebugEnabled()) {
logger.info("creating user: {}", user);
}
EntityManager entityManager = DbUtil.factory.createEntityManager();
try {
entityManager.getTransaction().begin();
// Persist takes an entity instance, adds it to the context and makes that instance managed (ie future updates
// to the entity will be tracked).
entityManager.persist(user);
entityManager.getTransaction().commit();
}
catch(RuntimeException e) {
throw getDbException(e);
}
finally {
entityManager.close();
}
return user;
}
知道他们为什么不关门吗?
答案 0 :(得分:0)
你说持久有效,可能你在db中看到了你的数据。但是你看到所有的数据,都没有失败吗?您的代码无法处理交易回滚,这可能是您在“交易空闲”中看到连接的原因。状态。
如果throw getDbException(e)
抛出异常,则不回滚事务。