此代码工作正常并已部署。但经过一段时间或某些天后,刷新的数据没有反映在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。答案 0 :(得分:0)
为什么要在每次更新时创建一个新的entityManager?
根据文件:
如果在实体管理器加入活动事务时调用此方法,则持久化上下文将保持管理状态,直到事务完成。
https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#close--