1

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

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

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

4

1 回答 1

1

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

merge会给你一个托管实体,然后你可以用来refresh从数据库中获取值。

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

于 2012-07-24T19:44:21.973 回答