我试图在删除父项时删除子记录。父表中没有引用子表的列。孩子指的是一对一可选关系中的父母。
当父级被删除时,由于事实关系仍然存在而引发约束。如果我将 set 关系添加到子端,则无济于事。Hibernate 不会删除子记录,因为我猜,从未获取过子记录。
有没有办法在拦截器中删除子记录?谢谢。
我试图在删除父项时删除子记录。父表中没有引用子表的列。孩子指的是一对一可选关系中的父母。
当父级被删除时,由于事实关系仍然存在而引发约束。如果我将 set 关系添加到子端,则无济于事。Hibernate 不会删除子记录,因为我猜,从未获取过子记录。
有没有办法在拦截器中删除子记录?谢谢。
我将提供类似情况的示例,将其应用于您的情况将解决问题。
让我们假设 Employee 在它的表中有一个 Department_ID,并且 Department 没有任何列引用 Employee_ID。
我们使用连接列将员工与部门相关联。这样我们就得到了单向关联。
public class Employee {
@OneToOne
@JoinColumn(name = "DEPARTMENT_ID")
private Department department;
}
接下来,我们通过标记与mappedBy
属性的关联来将部门与员工关联起来。它在 Employee 端引用关联的拥有字段。这样我们就得到了双向关联。
public class Department {
@OneToOne(mappedBy = "department", cascade = CascadeType.ALL)
private Employee employee;
}
与 CascadeType.ALL 的标记关联将包括 CascadeType.REMOVE,它将在删除操作时级联到 Employee。现在,删除部门,将连同它一起删除员工。