我在删除父级时尝试删除子记录。父表中没有引用child的列。孩子以一对一的可选关系引用父母。
当删除父项时,由于事实关系仍然存在而引发约束。如果我将设置关系添加到子端,则无效。 Hibernate不会删除子记录,因为我猜测,从未提取子记录。
有没有办法在拦截器中删除子记录?感谢。
答案 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。现在,删除部门,将删除员工。