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

JPA EntityManager为什么merge()不管理实例?,jpa,openjpa,entitymanager,Jpa,Openjpa,Entitymanager,当我对一个对象调用merge()时,该对象不会被管理。而是返回对同一实体的托管实例的引用。这背后的逻辑是什么?有没有办法通过一些设置来更改此行为(并使对象处于管理状态)?我正在使用OpenJPA2.2。谢谢。重点是merge()不是将对象附加到EntityManager上下文,而是返回附加的对象。因此,如果我们有: AEntity a2 = entityManager.merge(a1); a1保持未管理状态,而a2处于管理状态 顺便说一句,这是一种聪明的方法,因为合并不会产生副作用,传递的对

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

重点是merge()不是将对象附加到EntityManager上下文,而是返回附加的对象。因此,如果我们有:

AEntity a2 = entityManager.merge(a1);
a1保持未管理状态,而a2处于管理状态


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

您的意思是EntityManager的一级缓存已经有一个具有标识的托管对象,您将一些分离的对象与该标识合并,它将返回已托管的对象?或者,您的意思是,合并发生时,一级缓存中还没有具有该标识的实例,因此它创建了新的托管对象?谢谢您,Piotr。我想这是为了避免副作用。我担心我没有正确使用它。