Pessoal tenho duas classes aluno e grau envolvidas em um relacionamento ManyToMany, e três tabelas no meu BD (MySql) ALUNOS, ALUNO_GRAUS, GRAUS. O problema é que quando persisto um aluno com vários graus a minha DAO, além de popular a tabela ALUNO_GRAUS corretamente, tb inclui o conteúdo da List na tabela GRAUS. Coisa de doido mesmo. Alguém tem idéia do que estou fazendo de errado?
// aluno.java
public class aluno extends pessoaFisica {
......
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name = "ALUNO_GRAUS", joinColumns = @JoinColumn(name = "ID_ALUNO"), inverseJoinColumns = @JoinColumn(name = "ID_GRAU"))
private List<grau> graus = new ArrayList<grau>();
......
// grau.java
public class grau implements Serializable{
......
//@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE},mappedBy = "employees")
@ManyToMany(mappedBy = "graus",cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private List<aluno> alunos = new ArrayList<aluno>();
......
// alunoDao.java
.....
public boolean persist(aluno a) {
boolean resultado = true;
em = this.getEntityManager();
em.getTransaction().begin();
try {
em.persist(a);
em.getTransaction().commit();
} catch (Exception ex) {
em.getTransaction().rollback();
resultado = false;
} finally {
em.close();
}
return resultado;
}
......