我正在尝试从表中删除子条目,并且我的实体具有双向关系。我得到一个例外" 无法删除或更新父行:外键约束失败"。 当我删除与父项自动删除的子条目关系时,我需要映射。
@Entity
@Table
public class RuleModel implements Comparable<RuleModel> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Rule_Id", unique = true, nullable = false)
protected Integer id;
@OneToOne(fetch = FetchType.EAGER)
protected RuleModel parent;
@OneToOne(fetch = FetchType.EAGER)
protected RuleModel child;
}
答案 0 :(得分:0)
在删除子项之前,您必须断开对象之间的关系。
答案 1 :(得分:0)
我在pre-remove块中设置了parent和child null,所以hibernate首先将关系更新为null然后删除
@PreRemove
public void preRemove() {
if (parent != null) {
parent.setChild(null);
}
if (child != null) {
child.setParent(null);
}
}