hibernate @ManyToMany双向渴望获取

ref*_*los 7 many-to-many hibernate fetch

我有一个问题,我觉得应该很常见,但我找不到答案.

我有2个对象:组和用户.我的课看起来像这样:

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

class User
{
  @ManyToMany(fetch = FetchType.EAGER)
  List<Group> groups;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试从数据库中获取用户时,它会带来所有组,所有组都会带来所有用户等等.最后,我得到了一个stackoverflow异常.

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

Pas*_*ent 9

如果您使用属性(您应该使用该属性)使双向关联的一方成为关联的拥有方,您是否会遇到同样的问题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;
}
Run Code Online (Sandbox Code Playgroud)

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

实际上,根据此评论从灵光伯纳德一个(在某种程度上类似)的问题:

LAZY或者EAGER应该与代码库中的无限循环问题正交.Hibernate知道如何处理循环图

对我来说,上面的内容非常清楚,Hibernate应该能够处理你的映射(正如我在评论中提到的那样),我很想把任何矛盾的行为看作是一个bug.

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