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",
[email protected](name="student_pk", referencedColumnName="id"),
[email protected](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.