2 回答

TA貢獻1831條經驗 獲得超9個贊
顯然這是一個錯誤。如果您有一個實體 Person 并且該實體具有對另一個 Person 的嵌套引用,則意味著嵌套的 Person 具有另一個嵌套鏈接,因此它會執行子嵌套鏈接,依此類推。您不必使用 Person 對象引用嵌套的 Person。改用唯一的 id。
public class Person{
private int idNestedPerson;
//fields + getters/setters
}
現在您有 2 個選擇:使用外鍵或保持原樣。如果您選擇第一個選項,您必須映射該nestedId,但我建議您開始使用第二個選項。這樣你就有一個帶有引用“父親”人的 id 的人。如果該 nestedId 為 != null OR > 0(根據您分配給 id 的類型),則表示 Person 是嵌套的,如果未填充 id 或 id 的默認 int 值為 0,則表示 Person是一個“根”,所以不是嵌套的。有關詳細信息,請參閱“分層數據”。

TA貢獻1775條經驗 獲得超8個贊
這應該有效,直到您有循環依賴。對于循環依賴,StackOverflowError 可能會因為無限循環遞歸獲取先前狀態而發生。
例如,當你有兩個實體 A 和 B。A 指向 B 而 B 指向 A 那么你有無限循環,并且使用 EAGER 獲取策略你最終會得到 StackOverflowError。
您需要檢查您在 DB 中是否沒有任何循環依賴。
添加回答
舉報