[英]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.