Zwykle, aby zaimplementować relację wiele do wielu, musisz użyć jakiejś środkowej tabeli, aby odwzorować klucze z dwóch innych tabel.
W Twoim przypadku potrzebujesz, powiedzmy, t_students_friends tabela z dwiema kolumnami, jak poniżej:
t_students_friends
student_pk | przyjaciel_pk
W klasach encji możesz potrzebować Listy dla studentów i/lub przyjaciół. Zauważ, że @ManyToMany wymaga również @JoinTable adnotacja do pracy. Jeśli chcesz uzyskać dostęp do znajomych ucznia, dodaj do swojego Student klasa:
@ManyToMany
@JoinTable(
name="t_students_friends",
example@sqldat.com(name="student_pk", referencedColumnName="id"),
example@sqldat.com(name="friend_pk", referencedColumnName="id"))
private List<Friend> friends;
Powinieneś także zmodyfikować Friend klasę w następujący sposób. Dodaj
@ManyToMany(mappedBy="friends")
private List<Student> students;
i użyj prostego @Id int id tak jak w Studentach. Nie ma potrzeby w klasie FriendsPK.
Więcej informacji znajdziesz tutaj na przykład.