0

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

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

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

有问题的场景:

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

有什么优雅的方法吗?我真的不想打电话em.refresh(entity)

4

1 回答 1

1

如果您有可用的实体,那么 em.refresh(entity) 是强制重新加载实体的最干净的方法。

如果您没有可用的实体,您可以致电:

EM1.clear(); // all entities are detached - might not be desired.  
EM1.find(Entity1);

在 JPA 2.0 中,您还可以显式分离实体(但我不认为这比 em.refresh() 更好):

EM1.detach(Entity); 
EM1.find(Entity1);
于 2010-04-07T01:27:26.820 回答