Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Modelando o relacionamento muitos-para-muitos em JPA/Hibernate


Normalmente, para implementar uma relação muitos para muitos, você precisa usar alguma tabela intermediária para mapear chaves de duas outras tabelas.

No seu caso, você precisa, digamos, de t_students_friends tabela com duas colunas como a seguinte:

t_students_friends


aluno_pk | amigo_pk

Em suas aulas de entidade você pode precisar de Listas para alunos e/ou amigos. Observe que @ManyToMany também requer um @JoinTable anotação para o trabalho. Se você quiser acessar os amigos de um aluno, adicione ao seu 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;

Você também deve modificar Friend classe da seguinte forma. Adicionar
@ManyToMany(mappedBy="friends")
private List<Student> students;

e use @Id int id simples campo como você faz em Estudantes. Não há necessidade de uma classe FriendsPK.

Para mais informações, você pode ler aqui , por exemplo.