gpt4 book ai didi

java - 具有多对多关系的无限递归

转载 作者:行者123 更新时间:2023-12-02 09:58:30 24 4
gpt4 key购买 nike

我在 Java hibernate 多对多关系中遇到此错误:

Infinite recursion (StackOverflowError) (through reference chain:

org.hibernate.collection.internal.PersistentBag[0]-

com.company.nms.models.Group["users"]-

org.hibernate.collection.internal.PersistentBag[0]-

com.company.nms.models.User["groups"]

我已经检查了关系,但仍然出现此错误。

在我的 User.java 中,我有:

@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER)
List<Group> groups = new ArrayList<Group>();

在 Group.java 中,我有:

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = UserConstants.REFERENCE_GROUP_USER,
joinColumns = {@JoinColumn(name = "user_group_id")},
inverseJoinColumns = {@JoinColumn(name = "user_id")}
)
List<User> users = new ArrayList<User>();

预期结果应该是用户和组之间的多对多关系。

请帮忙。谢谢

最佳答案

由于双向引用,生成的 json 具有无限深度。您可以使用 @JsonManagedReference@JsonBackReference 注解来限制 json 的输出:

@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER)
@JsonBackReference
List<Group> groups = new ArrayList<Group>();

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = UserConstants.REFERENCE_GROUP_USER,
joinColumns = {@JoinColumn(name = "user_group_id")},
inverseJoinColumns = {@JoinColumn(name = "user_id")}
)
@JsonManagedReference
List<User> users = new ArrayList<User>();

或者用@JsonIgnore注释其中之一。

关于java - 具有多对多关系的无限递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55805761/

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