我只是想清除实体管理器的持久性上下文,以便从数据库中重新加载所有数据,特别是在该方法中:
public MyEntity find(Object id) {
EntityManager em = getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.flush();
tx.commit();
em.clear();
return em.find(MyEntity .class, id);
}
但这似乎flush()
无法正常工作,因为当我插入一个OtherEntity
并执行该方法时,在持久性上下文中按getCollection()
方法找不到它(仅在重新启动我的应用程序之后)。
我找到了答案:
@Override
public MyEntity find(Object id) {
EntityManager em = getEntityManager();
MyEntity ps = em.find(MyEntity .class, id);
em.refresh(ps);
return ps;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句