当前位置: 代码迷 >> J2EE >> 问个关于delete-orphan的奇怪有关问题
  详细解决方案

问个关于delete-orphan的奇怪有关问题

热度:263   发布时间:2016-04-22 03:33:37.0
问个关于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也可以.
  相关解决方案