簡體   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