gpt4 book ai didi

hibernate @ManyToMany双向渴望获取

转载 作者:行者123 更新时间:2023-12-04 11:30:57 24 4
gpt4 key购买 nike

我有一个很普遍的问题,但找不到答案。

我有2个对象:组和用户。我的类(class)如下所示:

class Group
{
@ManyToMany(fetch = FetchType.EAGER)
List<User> users;
}

class User
{
@ManyToMany(fetch = FetchType.EAGER)
List<Group> groups;
}

现在,当我尝试从数据库中获取用户时,它带来了所有组,所有组都带来了所有用户,依此类推。最后,我遇到了stackoverflow异常。

如何解决此问题,并且仍然具有双向关联以及到达列表中对象的能力?

最佳答案

如果使用mappedBy属性(无论如何都应使用)将双向关联的一侧作为关联的拥有侧,是否会遇到相同的问题?像这样:

@Entity public class Group {
...
@ManyToMany(fetch = FetchType.EAGER, mappedBy="groups")
List<User> users;
}

@Entity public class User {
...
@ManyToMany(fetch = FetchType.EAGER)
List<Group> groups;
}

更新:我找不到任何证据表明禁止在双向关联的两边使用 EAGER提取并且AFAIK,在Hibernate文档和/或JPA规范中没有提及这种限制。

实际上,根据伊曼纽尔·伯纳德(Emmanuel Bernard)的 this comment报道(某种程度上类似):

LAZY or EAGER should be orthogonal to an infinite loop issue in the codebase. Hibernate knows how to handle cyclic graphs



对我来说,上面的内容很清楚,Hibernate应该能够处理您的映射(正如我在评论中提到的那样),我很容易将任何矛盾的行为都视为错误。

如果可以提供一个允许重现问题的测试用例,我的建议是打开一个问题。

关于 hibernate @ManyToMany双向渴望获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3978733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com