最近在使用jpa进行开发,发现其中包含三种删除:
1. Explicit Remove 明确的删除
2. Cascading Remove 级联删除
3.Orphan Removal ??? 这个删除就不是很明白了? 请大家帮我理解一下
最近在使用jpa进行开发,发现其中包含三种删除:
1. Explicit Remove 明确的删除
2. Cascading Remove 级联删除
3.Orphan Removal ??? 这个删除就不是很明白了? 请大家帮我理解一下
按照官方给出的字面意思是:如果删除关系,是否删除关系上的实体,true表示会删除,false表示不删除。我们来举个例子说明一下,现在分别有User和Address两个实体,User类上有一个addresses的字段,表示引用多个Address实例,User和Address是一对多关系。大致的代码如下:
我们操作User实体,并删除一个address实例。
如果orphanRemoval = true,那么这个操作会删除address对象,如果为false,则会删除他们的关系,将address对user的引用设置为null。
不过我自己做过相应的测试,发现无论如何设置,它并不会生效。