簡體   English   中英

HIbernate:找到同一集合的兩個表示

[英]HIbernate: Found two representations of the same collection

使用Hibernate-EntityManager 4.3.5,我得到了HibernateException:找到了同一集合的兩個表示形式。

場景是我有兩個實體A和B; 兩者都與第三個實體C有關系。A也與B有關系。讓我們弄清楚:

A-> OneToOne與B和C

B-> OneToMany與C

A和B被加載到不同的事務(攔截器)中,但是接下來我創建A.setXXX(B)並執行一個entityManager.merge(A); -A有一個C實例,另一個B實例,但是它們代表相同的實例(相同的ID或主鍵)。 因此,我遇到了這個錯誤-實際上,我有2個不同的C實例(一個帶有A,另一個帶有B)代表相同的實體(相同的PK)。 如何解決呢? 我想到做類似B.setXXX(a.getXXX())的事情,但這聽起來很混亂。 有什么建議么?

多虧@Tobb和@Mihir,我才能弄清楚發生了什么-當我調用entityManager.merge(A)時,我有以下情況:

A指向B和C; B指向C的列表; C指向B的另一個實例,后者又指向C的列表;

但是,B的兩個實例表示相同的對象(相同的db PK)。 C的列表也是如此,因此得到消息很公平同一集合的兩個表示形式我必須刪除關系B-> C中的cascade = All,這樣合並不會越過該分支的該分支。圖形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM