Curso de Hibernate | Relación muchos a muchos

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Sin definir expresamente la tabla de pivote

@Entity @Getter @Setter
public class Alumno {
  @Id
  @GeneratedValue
  private Long id;
  private String nombre;

  @ManyToMany
  List<Asignatura> asignaturas;
}
@Entity @Getter @Setter
public class Asignatura {
  @Id
  @GeneratedValue
  private  Long id;
  private String nombre;

  @ManyToMany (mappedBy = "asignaturas")
  List<Alumno> alumnos;
}
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();

Alumno alumno = new Alumno();
alumno.setNombre("Paco2");

Asignatura asignatura = new Asignatura();
asignatura.setNombre("Matemáticas");

ArrayList<Asignatura> asignaturas = new ArrayList<>();
asignaturas.add(asignatura);

ArrayList<Alumno> alumnos = new ArrayList<>();
alumnos.add(alumno);

asignatura.setAlumnos(alumnos);
alumno.setAsignaturas(asignaturas);

session.save(alumno);
session.save(asignatura);

transaction.commit();
session.close();

Definiendo expresamente la tabla de pivote

while(premium == false) verCodigo = false;

Para poder ver el código fuente, accede o suscríbete.

Suscríbete

Al utilizar la clave embebida no se genera una columna adicional id en la base de datos y esta más alineado con las buenas prácticas.

notaalumno_id (PK)asignatura_id (PK)
1011

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.