Обикновено, за да приложите релация много към много, трябва да използвате някаква средна таблица, за да картографирате ключове от две други таблици.
Във вашия случай имате нужда, да речем, от t_students_friends
таблица с две колони като следната:
t_students_friends
student_pk | friend_pk
Във вашите класове по обекти може да имате нужда от списъци за ученици и/или приятели. Обърнете внимание, че @ManyToMany
също изисква @JoinTable
анотация за работа. Ако искате да получите достъп до приятели на ученик, добавете към вашия Student
клас:
@ManyToMany
@JoinTable(
name="t_students_friends",
[email protected](name="student_pk", referencedColumnName="id"),
[email protected](name="friend_pk", referencedColumnName="id"))
private List<Friend> friends;
Трябва също да промените Friend
клас, както следва. Добавяне
@ManyToMany(mappedBy="friends")
private List<Student> students;
и използвайте прост @Id int id
поле, както правите в Ученици. Няма нужда от клас FriendsPK.
За повече информация можете да прочетете тук , например.