日期:2014-05-20  浏览次数:20672 次

问个关于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也可以.