ManyToMany não salva/altera lista

Eu tenho um relacionamento ManyToMany e do lado da classe que não é a “dona” da relação a lista não é salva nem alterada:

[code]@Entity
public class Aluno {

@Id
@GeneratedValue
private Long id;
private String nome;
private Date dataNascimento;
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE})
@JoinTable (name="aluno_responsavel", joinColumns = {@JoinColumn (name = "aluno_id")},
inverseJoinColumns = @JoinColumn (name = "responsavel_id"))
private List<Responsavel> listaResponsavel;
    //getters and setters[/code]

No crud de alunos, a lista de Responsaveis é salva e alterada normalmente, mas no crud de responsável não

[code]@Entity
public class Responsavel {

@Id
@GeneratedValue
private Long id;
private String cpf;
private String nome;
private String endereco;
private String cep;
private String telefone;
private String celular;
private String email;
private Date dataConfirmacao;
@ManyToMany(mappedBy="listaResponsavel",targetEntity=Aluno.class,cascade={CascadeType.PERSIST,CascadeType.MERGE})
private List<Aluno> listaAluno;
   //getters and setters[/code]

E como você está fazendo para salvar?

Está usando o CascadeType.ALL no cascade do ManytoMany?

[quote=linngallo]Está usando o CascadeType.ALL no cascade do ManytoMany?[/quote]Por curiosidade, qual outra situação sem ser MERGE e PERSITE que o o ALL cobriria? O.o

se você faz um relacionamento bidirecional nas entidades, o lado que está com mappedBy é só uma conveniência, ele não serve pra consolidar o relacionamento…

ou seja, se você coloca um objeto no lado com o mappedBy, isso NÃO vai pro banco de dados. Pra ir pro banco de dados você sempre tem que atualizar o lado SEM o mappedBy.

para evitar confusões, crie métodos que atualizam os dois lados do relacionamento ao mesmo tempo (coloque isso nos setters por exemplo).