2 回答

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

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
這應(yīng)該有效,直到您有循環(huán)依賴。對于循環(huán)依賴,StackOverflowError 可能會因?yàn)闊o限循環(huán)遞歸獲取先前狀態(tài)而發(fā)生。
例如,當(dāng)你有兩個(gè)實(shí)體 A 和 B。A 指向 B 而 B 指向 A 那么你有無限循環(huán),并且使用 EAGER 獲取策略你最終會得到 StackOverflowError。
您需要檢查您在 DB 中是否沒有任何循環(huán)依賴。
添加回答
舉報(bào)