Bom dia!
Galera, alguém poderia me ajudar no mapeamento @ManyToMany?
Eu conseguir até salvar, mas na hora de fazer um remove() não estou conseguindo. Bom vou colocar um exemplo:
Aluno e Turma, o aluno tem muitas turmas dentro da sua vida escolar e a turma tem muitos alunos dentro do período letivo, ou seja, relacionamento @ManyToMany e bidirecional.
@Entity
@Table(name = "aluno")
public class Aluno implements Serializable {
@ManyToMany(targetEntity=Turma.class,
cascade = {CascadeType.ALL},
mappedBy = "alunos", fetch = FetchType.EAGER)
private Set<Turma> turmas;
}
@Entity
@Table(name = "turma")
public class Turma implements Serializable {
@ManyToMany(targetEntity = Aluno.class, mappedBy="turmas",
cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinTable(name = "aluno_turma",
joinColumns = {@JoinColumn(name = "idTurma")},
inverseJoinColumns = {@JoinColumn(name = "idAluno")})
private Set<Aluno> alunos;
}
Matriculando o aluno
@PersistenceContext
EntityManager em;
public void matricularAluno(Aluno aluno, Turma turma) {
aluno.setMatriculado(true);
aluno.getTurmas().add(turma);
em.persist(em.merge(aluno));
turma.getAlunos().add(aluno);
em.persist(em.merge(turma));
}
Desmatricular Aluno
Aqui é o problema, pois eu só tenho que desfazer o relacionamento, ou seja, retirar o aluno da lista da turma e retirar a turma da lista do aluno, e salvar, mas não estou conseguindo fazer. Alguém aí tem alguma idéia de como eu posso fazer isso?