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

Relação de muitos para muitos JPA não inserindo na tabela gerada


Tente isto:
public class Professor {
  @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinTable(name = "ALUNO_PROFESSOR",
        joinColumns = @JoinColumn(name = "idProfessor", referencedColumnName = "idProfessor"),
        inverseJoinColumns = @JoinColumn(name = "idAluno", referencedColumnName = "idAluno"))
  private List<Aluno> alunoList;
}

public class Aluno {
  @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinTable(name = "ALUNO_PROFESSOR",
        joinColumns = @JoinColumn(name = "idAluno", referencedColumnName = "idAluno"),
        inverseJoinColumns = @JoinColumn(name = "idProfessor", referencedColumnName = "idProfessor"))
  private List<Professor> professorList;
}

Isso garantirá que os metadados do relacionamento muitos-para-muitos estejam disponíveis em ambas as entidades e que as operações em ambos os lados do relacionamento sejam em cascata para o outro lado.

Também sugiro substituir FetchType.EAGER com FetchType.LAZY para um melhor desempenho porque isso tem o potencial de carregar um conjunto de dados muito grande.