gpt4 book ai didi

java - @OneToOne 删除一个 child

转载 作者:行者123 更新时间:2023-12-02 05:36:10 24 4
gpt4 key购买 nike

我有一个指向子类的父类:

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:我不完全确定我是否正确建模了。父级可以指向一个子级,但子级的实例可以由多个父级指向。我想做的是删除一个 child 并删除所有 parent 之间的引用。希望您能理解。

最佳答案

来自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);
}

关于java - @OneToOne 删除一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com