JPA EntityManager为什么merge()不管理实例?

时间:2012-05-17 23:01:56

标签: jpa openjpa entitymanager

当我在对象上调用merge()时,该对象不会被管理。而是返回对同一实体的托管实例的引用。这背后的逻辑是什么?有没有办法通过某些设置更改此行为(并使对象管理)?我正在使用OpenJPA 2.2。谢谢。

1 个答案:

答案 0 :(得分:3)

关键是merge()没有将对象附加到EntityManager上下文,它返回附加的对象。所以,如果我们有:

AEntity a2 = entityManager.merge(a1);

a1仍未受管理,而a2则受到管理。

顺便说一下,这是巧合的方法,因为合并不会引起副作用,传递的对象状态不会改变。