Мне нужно иметь функции "FriendRequest" и "ListOfFriends". Подобно facebook, в котором показано количество полученных запросов друзей и количество одобренных друзей.
Под "FriendRequest" я хочу иметь список запросов друзей, которые пользователь получает.
В "ListOfFriends" я хочу иметь список друзей пользователя.
Чтобы достичь этого, я определил следующий класс, но когда я попытаюсь найти пользователя с его именем пользователя, будет выведено сообщение об исключении "Stackoverflow". Кажется, он переходит в неопределенный цикл.
Когда я удаляю "FriendRequests" и "Friends" из моего метода toString
, он перестает бросать исключение.
Этот вопрос похож на то, что я собираюсь достичь, но разница У меня нет того, чтобы иметь отдельный класс Credential.
Член
@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;