刚刚开始接触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我想就是为了其他人阅读代码时明确此中删除关系做的说明而已