在JPA中从未连接的对象获取附加对象

时间:2012-07-24 19:33:37

标签: jpa jpa-2.0

假设我在JPA应用程序中有几种类型的实体,以及执行所有与数据库相关的操作的存储库。

有时它会从外部传递未附加的实体,我想获得它们的附加副本 (例如,要保留包含对此实体的引用的新实体,或访问延迟属性)。

EntityManager.refresh(entity)不适用于未附加的对象。 EntityManager.merge(entity)将复制分离实体的当前状态,而不是从我想要的数据库中获取当前值。 EntityManager.find(entity.getId(), entityClass)有效,这就是我现在所做的,但它取决于实体的类型(尽管我现在想到它,EntityManager.find(entity.getId(), entity.getClass())更好)。还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您可以合并和刷新: entityManager.refresh(entityManager.merge(entity));

merge会为您提供一个托管实体,然后您可以使用refresh从DB中获取值。

此代码应适用于附加实体和分离实体。