当我在对象上调用merge()时,该对象不会被管理。而是返回对同一实体的托管实例的引用。这背后的逻辑是什么?有没有办法通过某些设置更改此行为(并使对象管理)?我正在使用OpenJPA 2.2。谢谢。
答案 0 :(得分:3)
关键是merge()没有将对象附加到EntityManager上下文,它返回附加的对象。所以,如果我们有:
AEntity a2 = entityManager.merge(a1);
a1仍未受管理,而a2则受到管理。
顺便说一下,这是巧合的方法,因为合并不会引起副作用,传递的对象状态不会改变。