hibernate/mysql 外键级联删除

eblddong 2017-03-30 10:34:15
我有两张表部门表Department和员工表Employee,一个Department有多个Employee,Employee有指向Department的外键
问题是直接删除Department会报错,因为有外键,于是在数据库里设置外键on delete cascade,但这与实际情况不符,Department没有了,但是Employee还是在的,设定on delete set null,查询的时候又会报错,怎么能在删除时设定Employee的外键为默认值,用Hibernate的话配置该怎么写

用mysql5.5 设置on delete set default 总是报错,不能保存
...全文
238 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
albert_steven_yu 2018-04-06
  • 打赏
  • 举报
回复
楼主你好,我看到你下载这个:传智博客.燕青老师的SpringMvc课堂笔记和教案 ,请问一下可以发给我吗?1102132084@qq.com,我的积分不够,无法下载,非常感谢您!
qq_32295869 2017-03-31
  • 打赏
  • 举报
回复
你好,你这个问题是hibernate里面的表的关系,是多对一的关系,在配置的时候你这里多的一方是员工,对应的实体类employee 中有一个department属性在配置的时候,它有个employee.hbm.xml文件,在这个文件中配置的映射,里面会有个<many-to-one>元素,配置的是employeee所引用的外键你可以把这个元素中的not-null=false那么就是允许外键为空,就是department不存在了,至于级联cascade=save-update就可以,只在保存和更新的时候级连操作
小武格 2017-03-30
  • 打赏
  • 举报
回复
如果Department中没有Employee的属性的话,这种情况应该考虑自己写个方法来实现Department的remove操作,先把employee的department置为默认值,然后再删除。 如果Department中有employee的集合属性并且你使用了JPA的话,可以设定OneToMany的orphanRemoval = false,这样在删除department的时候就不会删除employee的记录了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧