To fazendo uma pesquisa aqui no fórum, mas num encontrei exatamente o que queria. Tenho o seguinte problema, fiz o mapeamento ManyToMany em JPA usando o Hibernate.
São tres tabelas: Aluno, aluno_turma, Turma.
Aluno | aluno_turma | Turma
id int pk | aluno_id fk | id int pk
nome varchar | turma_id fk | …
No mapeamento, fiz bidirecional, tudo normal. Quando salvo, salva normalmente o aluno e sua turma relacionada. Porém, quando salvo novamente o mesmo aluno, para outra turma, ele é deletado e reinserido para a nova turma. Ou seja, não posso colocar um aluno em 2 turmas diferentes.
No mapeamento, fiz assim:
Bom gente, por eu ser iniciante ao extremo, não consegui entender o porque isso ocorre. O que eu queria seria poder salvar o mesmo aluno em diversas turmas.
Cara, se fez dessa forma como diz, está certo. O que significa que seu problema é outro. Procure ver como está salvando seus objetos, pois tenho certeza que é onde reside seu problema. Se for o caso, poste aqui pra analisarmos.
Pô djemacao, vc acertou em cheio. Era eu fazendo o que num deve (leia-se cagada).
Eu tava adicionando um new Array no código antes de adicioná-lo a Set e deixei assim:
[code] aluno.getTurmas().add(turma);
turma.getTurmas().add(aluno);
[/code]
Outro erro meu era usar Collection ao invés de Set, onde ele num verificava se o aluno havia sido adicionado a turma já e vice-versa. Bom, é isso.
Vou deixar a referência onde encontrei as soluções: