我需要有“FriendRequest”和“ListOfFriends”功能。类似于facebook,它显示收到的好友请求数量和批准的好友数量。
我所说的“FriendRequest”是指拥有用户收到的好友请求的列表。
通过“ListOfFriends”,我的意思是拥有用户的朋友列表。
为了实现这一点,我定义了以下类,但是当我尝试使用用户名检索用户时,将抛出“Stackoverflow”异常消息。似乎进入了无限循环。
当我从我的帐户中删除“好友请求”和“好友”时toString
方法它停止抛出异常。
这个问题 https://stackoverflow.com/questions/31099346/how-to-model-a-friendship-relationship-in-hibernate与我要实现的目标相似,但区别在于我不知道有什么单独的证书课程。
Member
@Entity
public class Member implements Serializable {
@Id
@GeneratedValue
private long id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String fname;
@Column(nullable = false)
private String lname;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "requester")
private Set<Friendship> friendRequests = new HashSet<Friendship>();
@OneToMany(fetch = FetchType.EAGER, mappedBy = "friend")
private Set<Friendship> friends = new HashSet<Friendship>();
getters and setters
@Override
public String toString() {
return "Member [
.....
, fname=" + fname + ", lname=" + lname
// + friendRequests.size() + ", friends=" + friends.size() +
"]";
}
}
友谊
@Entity
public class Friendship implements Serializable {
@Id
@ManyToOne
@JoinColumn(referencedColumnName = "username")
Member requester;
@Id
@ManyToOne
@JoinColumn(referencedColumnName = "username")
Member friend;
@Temporal(javax.persistence.TemporalType.DATE)
Date date;
@Column(nullable = false)
boolean active;