jpa已刷新的实体未反映在DB中

时间:2017-02-06 08:20:19

标签: java jpa

此代码工作正常并已部署。但经过一段时间或某些天后,刷新的数据没有反映在DB

 protected boolean update(Object entity) {
    EntityManager entityManager = null;
    try {
        entityManager = this.createEntityManager();
        EntityTransaction tx = entityManager.getTransaction();
        try {
            tx.begin();
            entityManager.merge(entity);
            entityManager.flush();
            tx.commit();
            return true;
        } catch (Exception e) {
            logger.error("Exception thrown in update(): " + e.getMessage());
            tx.rollback();
            return false;
        }
    } catch (Exception e1) {
        logger.error("Exception thrown in create(): " + e1.getMessage(), e1);        
        return false;
    } finally {
        if (entityManager != null && entityManager.isOpen()) {
            this.closeEntityManager(entityManager);
        }
    }
}

这是我的父dao更新方法。

提前tx。

1 个答案:

答案 0 :(得分:0)

为什么要在每次更新时创建一个新的entityManager?

根据文件:

  

如果在实体管理器加入活动事务时调用此方法,则持久化上下文将保持管理状态,直到事务完成。

https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#close--