4

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

4

1 回答 1

3

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

AEntity a2 = entityManager.merge(a1);

a1 仍然不受管理,而 a2 是受管理的。

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

于 2012-05-19T08:21:08.863 回答