Di solito, per implementare una relazione molti a molti è necessario utilizzare una tabella intermedia per mappare le chiavi di altre due tabelle.
Nel tuo caso hai bisogno, diciamo, di t_students_friends
tabella con due colonne come la seguente:
t_students_friends
studente_pk | amico_pk
Nelle tue classi di entità potresti aver bisogno di Liste per studenti e/o amici. Nota che @ManyToMany
richiede anche un @JoinTable
annotazione per funzionare.Se vuoi accedere agli amici di uno studente, aggiungi al tuo Student
classe:
@ManyToMany
@JoinTable(
name="t_students_friends",
[email protected](name="student_pk", referencedColumnName="id"),
[email protected](name="friend_pk", referencedColumnName="id"))
private List<Friend> friends;
Dovresti anche modificare Friend
classe come segue. Aggiungi
@ManyToMany(mappedBy="friends")
private List<Student> students;
e usa il semplice @Id int id
campo come in Studenti. Non c'è bisogno di una classe FriendsPK.
Per ulteriori informazioni puoi leggere qui , per esempio.