Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 JPA/Hibernate-将实体与子实体分离_Java_Hibernate_Jpa 2.0 - Fatal编程技术网

Java JPA/Hibernate-将实体与子实体分离

Java JPA/Hibernate-将实体与子实体分离,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,我使用JPA2和Hibernate 3.6.8作为实现 假设我们有一个实体Foo @Entity public class Foo { .... @OneToOne private Bar bar; .... } 我需要将整个实体图从会话中分离出来,当我执行entityManager.detach(foo)时,我惊讶地发现bar仍然连接在一起,这与我的直觉相反 阅读EntityManager上的文档,这似乎是预期的情况,因为它没有提到任何关联/子实体: 从持久

我使用JPA2和Hibernate 3.6.8作为实现

假设我们有一个实体
Foo

@Entity
public class Foo {
    ....
    @OneToOne
    private Bar bar;

    ....
}
我需要将整个实体图从会话中分离出来,当我执行
entityManager.detach(foo)
时,我惊讶地发现
bar
仍然连接在一起,这与我的直觉相反

阅读
EntityManager
上的文档,这似乎是预期的情况,因为它没有提到任何关联/子实体:

从持久性上下文中删除给定实体,导致托管实体分离。对实体所做的未刷新更改(如果有)(包括删除实体)将不会同步到数据库。先前引用分离实体的实体将继续引用它

我也可以简单地调用
entityManager.detach(foo.getBar())
,但这意味着如果我以后添加任何关联,我必须确保这些关联也是手动分离的


有没有方便的方法来实现这一点而不诉诸反思

添加类型为DETACH的级联:

@OneToOne(cascade = CascadeType.DETACH)
private Bar bar;