[英]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
的属性。 当一个实例instanceC
的EntityC
被删除时,所有的实例instancesB
的EntityB
引用它必须被删除,从实例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.