0

我试图在删除父项时删除子记录。父表中没有引用子表的列。孩子指的是一对一可选关系中的父母。

当父级被删除时,由于事实关系仍然存在而引发约束。如果我将 set 关系添加到子端,则无济于事。Hibernate 不会删除子记录,因为我猜,从未获取过子记录。

有没有办法在拦截器中删除子记录?谢谢。

4

1 回答 1

2

我将提供类似情况的示例,将其应用于您的情况将解决问题。

让我们假设 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。现在,删除部门,将连同它一起删除员工。

于 2012-06-11T08:10:31.110 回答