首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate 删除时 怎么设置 其它表的外键 置空

2012-01-20 
hibernate 删除时 如何设置 其它表的外键 置空问题描述:采用的是Hibernate 3 ,B表某字段依赖于A表的主键,

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"即可

热点排行