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