重新加载持久化实体

时间:2010-01-12 13:15:56

标签: java jpa openjpa

我在我的应用程序中使用OpenJPA作为JPA供应商。

问题是理论上或概念上的:

有没有办法告诉实体经理从数据库而不是从缓存中加载实体?

有问题的情况:

EM1.persist(Entity1)
EM2.merge(Entity1)
EM1.find(Entity1)  <--- Entity1 is the cached version rather than the merged one..

任何优雅的方式吗?我真的不想打电话给em.refresh(entity)

1 个答案:

答案 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);