Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么时候应该使用EntityManger分离方法?_Java_Jpa_Entitymanager - Fatal编程技术网

Java 什么时候应该使用EntityManger分离方法?

Java 什么时候应该使用EntityManger分离方法?,java,jpa,entitymanager,Java,Jpa,Entitymanager,我有以下代码,其中em是EntityManager: Query query = em.createQuery( "SELECT e FROM TODO e " ); ret = (TODO) query.getSingleResult(); em.detach( ret ); return ret; 一旦我从这个方法返回ret(并离开类),实体管理器不会分离吗?为什么我需要使用detach方法 事务结束时自动分离实体。 有时,您希望在之前分离实体,因为您希望在实体中进行更改,而您不希望自动持

我有以下代码,其中em是EntityManager:

Query query = em.createQuery( "SELECT e FROM TODO e " );
ret = (TODO) query.getSingleResult();
em.detach( ret );
return ret;

一旦我从这个方法返回ret(并离开类),实体管理器不会分离吗?为什么我需要使用detach方法

事务结束时自动分离实体。
有时,您希望在之前分离实体,因为您希望在实体中进行更改,而您不希望自动持久化该实体。

我将在将实体交给用户方法(可能是回调方法)之前分离该实体,因为该回调方法预期能够访问(读取),但不要在我的事务处理过程中影响/更改对象。

当会话关闭时,它将分离。例如,如果要在数据库中不反映更改的情况下对其进行修改,则需要分离该实体。另一个原因可能是将该实体传递给另一个线程。