运行环境
- Java 10
- JPA 2.1
- Mariadb 10.1.33
问题描述
Parent和Child是1对多关系。在JPA中设置了单向关联,即Child中parent
指向Parent,但是Parent中没有定义相应的children
集合。在这种情况下,删除Parent如果存在关联的Child的话,将触发外键约束导致无法删除。(如果是双向关联的话,JPA设置CascadeType.ALL
会自动级联删除,究其原因应该是单向关联时JPA无法从Parent对象取得关联的Child对象)。
解决方案
在这种情况下,需要在数据库的外键设置上加上ON DELETE CASCADE
和/或ON UPDATE CASCADE
。具体实现可以看示例代码。
示例代码
class Parent {
@Id
@GeneratedValue
Long _id
/*
这里没有定义子类集合&