ManyToMany não salva/altera lista

4 respostas
G

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:

@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

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

@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

4 Respostas

Hebert_Coelho

E como você está fazendo para salvar?

linngallo

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

Hebert_Coelho

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

Lucas_Cavalcanti

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).

Criado 19 de junho de 2012
Ultima resposta 28 de jun. de 2012
Respostas 4
Participantes 4