我使用 JPA 2 和 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)