我在我的应用程序中使用OpenJPA作为JPA供应商。
问题是理论上或概念上的:
有没有办法告诉实体经理从数据库而不是从缓存中加载实体?
有问题的情况:
EM1.persist(Entity1)
EM2.merge(Entity1)
EM1.find(Entity1) <--- Entity1 is the cached version rather than the merged one..
任何优雅的方式吗?我真的不想打电话给em.refresh(entity)
。
答案 0 :(得分:1)
如果您有可用的实体,则em.refresh(实体)是强制重新加载实体的最简洁方法。
如果您没有可用的实体,可以致电:
EM1.clear(); // all entities are detached - might not be desired.
EM1.find(Entity1);
在JPA 2.0中你也可以明确地分离实体(但我不认为它比em.refresh()更好):
EM1.detach(Entity);
EM1.find(Entity1);