gpt4 book ai didi

java - JPA中的外键约束错误

转载 作者:行者123 更新时间:2023-11-30 04:20:28 26 4
gpt4 key购买 nike

我有三个实体,如下所示:

@Entity
class EntityA{
@OneToMany(cascade = javax.persistence.CascadeType.ALL, orphanRemoval = true)
private List<EntityB> _candidates = null;
}

@Entity
class EntityB{
@OneToOne
private EntityC _comp;
}

@Entity
class EntityC{
...
}

EntityB 具有 EntityC 类型的属性。当删除 EntityC 的实例 instanceC 时,引用它的 EntityB 的所有实例 instancesB 也必须被删除,来自包含 instancesBEntityA 实例。

我可以通过注释实现这种行为吗?在代码的当前状态下,删除 EntityC 对象时出现以下异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails

最佳答案

您的 B 表具有 A 和 C 的外键以及必须维护的当前映射。因为 A 的 fk 是由 A 到 B 的 OneToMany 控制的,所以只要在删除 B 时删除 A 对 B 的引用,就不会出现太大问题,只是为了保持缓存实体与更改同步。另一方面,与 C 的关系要求您在删除 C 之前从 B 取消引用 C,或者也删除 B,否则 B 表中的 fk 将保留,从而违反约束。正如评论所述,删除实体时您将需要某种程度的关系管理。

关于java - JPA中的外键约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177165/

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