Relacionamento ManyToMany resultado inesperado

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