当关系是从child到parent时,如何在hibernate中删除child

时间:2012-06-09 00:42:54

标签: hibernate hibernate-mapping

我在删除父级时尝试删除子记录。父表中没有引用child的列。孩子以一对一的可选关系引用父母。

当删除父项时,由于事实关系仍然存在而引发约束。如果我将设置关系添加到子端,则无效。 Hibernate不会删除子记录,因为我猜测,从未提取子记录。

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

1 个答案:

答案 0 :(得分: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。现在,删除部门,将删除员工。