hibernate的级联删除

gm100861 发布于 2014/11/17 20:26
阅读 119
收藏 2
我想问一下,hibernate的级联选项中delete和delete-orphan有什么不同啊,我测试下来,感觉两者效果是一样的.都是级联删除了指定项和指定项的关联项.想请教一下这里的大神,是不是哪里还需要别的配置,才能看出来不同.
加载中
0
h
hao5ang

一对多关系中,假设是 教室学生 的关系的话 应该是 这样:

delete效果: 删除教室,则所有的学生会关联删除.但是在学生的 collection(可能会是个List) 中 romove 学生的时候,只是将教室和学生的关系断开.会出现游离态,没有教室的学生.

delete-orphan效果:单独 romove 教室 中的某个学生的时候,学生不会变成没有教室的学生,整条记录会一起删除.

学艺不精,请自己测试是否这个样子.有时间好好看看 hibernate.

http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/

http://stackoverflow.com/questions/1377585/what-is-the-difference-between-delete-orphan-and-delete

0
g
gm100861

引用来自“hao5ang”的评论

一对多关系中,假设是 教室学生 的关系的话 应该是 这样:

delete效果: 删除教室,则所有的学生会关联删除.但是在学生的 collection(可能会是个List) 中 romove 学生的时候,只是将教室和学生的关系断开.会出现游离态,没有教室的学生.

delete-orphan效果:单独 romove 教室 中的某个学生的时候,学生不会变成没有教室的学生,整条记录会一起删除.

学艺不精,请自己测试是否这个样子.有时间好好看看 hibernate.

http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/

http://stackoverflow.com/questions/1377585/what-is-the-difference-between-delete-orphan-and-delete

嗯,你提回答是正确的,开始是我自己想错了.我是都使用了delete教室来测试的,结果当然是一样的.如果使用集合的remove移除教室中的某个学生,二者是有差的,delete会把移除的学生置为没有教室的情况,而delete-orphan则会直接把学生记录删除,而不是置为没有学生的状态.我自己也想明白了,不过还是要谢谢你.
返回顶部
顶部