EntityManager连接在交易中处于空闲状态'在持久/提交之后

时间:2016-02-26 17:36:01

标签: java postgresql entitymanager

我的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;
}

知道他们为什么不关门吗?

1 个答案:

答案 0 :(得分:0)

你说持久有效,可能你在db中看到了你的数据。但是你看到所有的数据,都没有失败吗?您的代码无法处理交易回滚,这可能是您在“交易空闲”中看到连接的原因。状态。

如果throw getDbException(e)抛出异常,则不回滚事务。