【问题标题】:Reloading of persisted entity重新加载持久化实体
【发布时间】:2010-01-12 13:15:55
【问题描述】:

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

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

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

有问题的场景:

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

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

【问题讨论】:

  • em.refresh(entity) 有什么问题?这只是一行代码,任何其他解决方案都不会比这更简洁。

标签: java jpa openjpa


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多