Java 重新加载持久化实体

Java 重新加载持久化实体,java,jpa,openjpa,Java,Jpa,Openjpa,我作为JPA供应商在我的应用程序中使用OpenJPA 这个问题是理论性的或概念性的: 有没有办法告诉实体管理器从数据库而不是从缓存加载实体 有问题的情况是: EM1.persist(Entity1) EM2.merge(Entity1) EM1.find(Entity1) <--- Entity1 is the cached version rather than the merged one.. EM1.persist(Entity1) EM2.合并(实体1) EM1.find(En

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

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

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

有问题的情况是:

EM1.persist(Entity1)
EM2.merge(Entity1)
EM1.find(Entity1)  <--- Entity1 is the cached version rather than the merged one..
EM1.persist(Entity1)
EM2.合并(实体1)

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

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

EM1.clear(); // all entities are detached - might not be desired.  
EM1.find(Entity1);
在JPA2.0中,您还可以显式分离实体(但我不认为这比em.refresh()更好):


em.refresh(实体)
有什么问题?这只是一行代码,任何其他解决方案都不会比这更简洁。
EM1.detach(Entity); 
EM1.find(Entity1);