我有一個多對多的關係,如果鏈接表有一個額外的字段。因此,關係根據下面教程2一個一對多關係來完成:休眠:在StackOverflowError中合併多對多結果
我有2個實體,其中定義的鏈路表,幷包括一個@Embeddable ID字段的第三實體。
的關係被定義爲:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.compound", cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.structure", cascade = CascadeType.ALL)
是PK =所述@Embeddable ID字段。插入和刪除工作正常,但是當我打電話
session.merge(compound);
我得到的StackOverflowError和日誌顯示冬眠正在噸select語句。請注意,數據庫只包含1個關聯,例如。 1化合物含有2個結構。它看起來像休眠進入無盡的循環。
我在http://giannigar.wordpress.com/2009/09/04/mapping-a-many-to-many-join-table-with-extra-column-using-jpa/上也看到過這個解決方案,但是如何更新這個?
也許你正在通過多對多關係加載你的完整的多對多表。想象一下'A1'引用'B1'。 'B1'引用'A1'和'A2'。 'A2'引用'B2'。等等。隨着從關係的一側到另一側的每一次切換,您都會獲得額外的堆棧級別。 – SpaceTrucker
堅持並加載工作,但在調用合併時出現問題。 –
@SpaceTrucker,但合併應該管理前一個合併子操作訪問的實體。 beginner_請您分享您的完整實體與測試用例,以便我們能夠更好地幫助您。 –