寂寞的风永不搁浅

学习之初 多为转载 未名出处 敬请见谅 点滴积累 必有作为

博客园 首页 新随笔 联系 订阅 管理

  刚刚开始接触J2EE,我发现的haibernate级联删除的问题;实验如下:

1.首先将hibernate主表配置文件cascade设置为"delete";oracle数据库的外键ondelete设置为noaction

删除主表中的数据,会报异常violated - child record found

2.首先将hibernate主表配置文件cascade设置为""save-update"";oracle数据库的外键ondelete设置为noaction

删除主表中的数据,会报异常violated - child record found

 

3.首先将hibernate主表配置文件cascade设置为""delete"";oracle数据库的外键ondelete设置为delete

删除主表中的数据,子表中关联的数据会被删除;

 

4.首先将hibernate主表配置文件cascade设置为""save-updatel"";oracle数据库的外键ondelete设置为delete

删除主表中的数据,子表中关联的数据会被删除;

综上所述:

1.hibernate配置文件中的cascade=delete对于主表的删除操作没有效果,hibernate不会增加删除字表sql操作;

会被数据库外键约束返回异常;除非在代码中将多端数据从一端的set删除后再保存;

2.外键约束主要在数据库端控制,只要数据库ondelete设置为delet无论hibernate配置cascade为何值都会被级联删除;

而此处设置为cascade=delete我想就是为了其他人阅读代码时明确此中删除关系做的说明而已

 

posted on 2009-09-29 17:14  景阳  阅读(1223)  评论(0编辑  收藏  举报