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 中是否没有任何循环依赖。
添加回答
举报