Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Relacja JPA wiele do wielu nie wstawia się do wygenerowanej tabeli

Spróbuj tego:

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;
}

Zapewni to, że metadane dla relacji wiele-do-wielu będą dostępne na obu encjach, a operacje po obu stronach relacji będą kaskadowane na drugą stronę.

Proponuję również zamienić FetchType.EAGER z FetchType.LAZY dla lepszej wydajności, ponieważ może to spowodować załadowanie bardzo dużego zestawu danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć n-ty rekord z zapytania MySQL

  2. Mariadb Docker-compose nie może się zrestartować po zmianie (kod wyjścia 1)

  3. Wybierz wiersze, aż zostanie osiągnięta łączna kwota w kolumnie (mysql)

  4. Ignoruj ​​„widoki” w kopii zapasowej bazy danych mysql za pomocą mysqldump

  5. Dane z dwóch tabel bez powtarzania danych z pierwszej?