问个关于delete-orphan的奇怪问题
Sql server 2005 expression,Hibernate 3.2+Spring2.0
里面有2个表,学生和班级,是多对一关系.
班级的一对多设置为
<set name="xueshengs" inverse="true" cascade="all-delete-orphan" lazy="false">
<key>
<column name="class_id" length="32" not-null="true" />
</key>
<one-to-many class="Xuesheng" />
</set>
学生的为
<many-to-one name="banji" class="Banji" fetch="select"
cascade="all">
<column name="class_id" length="32" not-null="true" />
</many-to-one>
现在问题来了,我在班级的set里REMOVE掉其中一个学生的时候,那个学生是从表里消失 了,但是这个班级也从表里消失了,并且跟这个班级关联的其他学生也挂了.
我本来想达到的目的是,从班级里REMOVE掉一个学生后,就删除这个学生,不论最后这个班级还有没有剩余学生,班级都不会消失掉.
------解决方案--------------------all-delete-orpah 会级联删除他所关联的对象也就是你的 班级。
象你目前 的这种业务逻辑应该
把
cascade 设置为 save-update
------解决方案--------------------楼上说的对,cascade 设置改为none也可以.