MySQL在做数据库设计的时候,关于外键可以有两个设置:
- On Update;
- On Delete;
- 对应的选项是:RESTRICT,CASCADE,SET NULL,NO ACTION;分别表示不允许、映射、置空、无动作。
查了不少资料,发现Hibernate无法实现在父记录删除的时候,将子记录的外键置空。
对应的处理方式,就是手动实现相应的操作(使用JPA等数据操作方式)。
而Hibernate的外键关系映射@ManyToOne、@OneToOne、@ManyToMany等的cascade属性无法实现如上需求,无论哪一种CascadeType(ALL,PERSIST,MERGE,REMOVE,REFRESH,DETACH)。