繁体   English   中英

JPA中的外键约束错误

[英]Foreign key constraint error in JPA

我有三个看起来像这样的实体:

@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的属性。 当一个实例instanceCEntityC被删除时,所有的实例instancesBEntityB引用它必须被删除,从实例EntityA含有instancesB

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

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败

您的B表具有同时保留A和C以及您当前映射的外键。 因为到A的fk由A的OneToMany到B的控制,所以只要删除B时删除A对B的引用,这只是一个保持缓存的实体与更改同步的选项,就不会有太大的问题。 另一方面,与C的关系要求您先从B解引用C,然后再将其删除或删除B,否则B表中的fk将保留,从而违反了约束。 注释说明,删除实体时需要某种级别的关系管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM