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

hibernate 删除时 如何设置 其它表的外键 置空
问题描述:
采用的是Hibernate 3 ,B表某字段依赖于A表的主键,且B表此字段允许为空。B与A的关系是一对多关联。

现在想删除B中的某一记录,但是不想级联删除A表中关联此记录的记录,想置A表中的外键为NULL。

请问Hibernate有没有相应的设置 或者 实现方法。

------解决方案--------------------
color=#FF0000]1.[/color]设置b为a的一个Set 类型的属性a{ private Set b }
设置a为b的一个Set 类型的属性b{ private Set a }
然后设置getset方法
2.在b配置文件中设置
多对1<many-to-one name="a" column="外键" cascade="save-update" no-null="true"/>
这样对b的操作就关联了a,删除b的话对a没有影响。
3.在a配置文件中设置
1对多
<set name="b" cascade="delete">
<key column="a_id"/>
<one-to-many class="com.bean.b"></one-to-many>
</set>这样如果你删除了a,所有跟a有关的b都会被删除。


------解决方案--------------------

其实像LZ说的这种情况叫假删除在配置里面加一个属性reverse=true,cascade="save-update"即可