+
 新版

jpa中orphanRemoval=true如何理解

zrz55661 发布于 2014/06/04 10:57
阅读 23K+
收藏 1
JPA

最近在使用jpa进行开发,发现其中包含三种删除:

1. Explicit Remove  明确的删除

2. Cascading Remove   级联删除

3.Orphan Removal  ???  这个删除就不是很明白了?  请大家帮我理解一下

加载中
0
不允许改性别
不允许改性别

按照官方给出的字面意思是:如果删除关系,是否删除关系上的实体,true表示会删除,false表示不删除。我们来举个例子说明一下,现在分别有User和Address两个实体,User类上有一个addresses的字段,表示引用多个Address实例,User和Address是一对多关系。大致的代码如下:

public class User{
    @OneToMany(orphanRemoval = true)
    private Set<Address> addresses;
//...
}

public class Address{
//...
}

我们操作User实体,并删除一个address实例。 

User user = em.find(User.class,1L);
Address address = em.find(Address.class,1L);
user.getAddresses().remove(address);
em.save(user);

如果orphanRemoval = true,那么这个操作会删除address对象,如果为false,则会删除他们的关系,将address对user的引用设置为null。

 

不过我自己做过相应的测试,发现无论如何设置,它并不会生效。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部