我在尝试从数据库中获取 Set<> Collection 时遇到问题。这是代码的相关部分:
@Entity
public Class User {
...
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<User> userFriends;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<FriendRequest> friendRequests;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<FriendRequest> sentRequests;
}
我试图将级联更改为 CascadeType.Persist 并且仍然遇到同样的问题。如果有人知道这个问题,我也很乐意了解我做错了什么以及 CascadeTypes 之间的区别(至少何时使用每个)。
这是我得到的 StackTrace:
Exception in thread "main" java.lang.StackOverflowError
at java.util.HashMap$KeyIterator.<init>(Unknown Source)
at java.util.HashMap$KeySet.iterator(Unknown Source)
at java.util.HashSet.iterator(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:328)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at MyRally1.demoRally.beans.User.toString(User.java:191)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:328)
谢谢 !