我有一个指向Child类的Parent类:
public class Parent {
@OneToOne
private Child child;
}
public class Child {
}
有没有办法删除子而没有获得约束异常?
Caused by: com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
P.S:我不完全确定我是否正确地建模了这个。 Parent可以指向一个Child,但可以通过多个Parent指向Child的实例。我想要做的是删除一个孩子并在所有被删除的父母中引用它。希望你明白。
答案 0 :(得分:2)
来自this我认为你需要做两件事:
public class Parent {
@ManyToOne(optional=true)
private Child child;
}
public class Child {
@OneToMany
private Set<Parent> parents;
}
void removeChild(Child toRemove) {
for (Parent p : toRemove.getParents()) {
p.setChild(null);
em.merge(p);
}
em.delete(toRemove);
}