具有多对多关系的无限递归
Infinite recursion with many to many relationship
我在 Java 休眠多对多关系时遇到此错误:
Infinite recursion (WhosebugError) (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>();
预期的结果应该是用户和组之间的多对多关系。
请帮忙。谢谢
Produced 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 休眠多对多关系时遇到此错误:
Infinite recursion (WhosebugError) (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>();
预期的结果应该是用户和组之间的多对多关系。
请帮忙。谢谢
Produced 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
注释其中之一。