Bom dia senhores, tenho uma duvida… gostaria de saber o que poderia ser feito para facilitar esse relacionamento entre minhas tabelas…
Problema:
tenho uma TB_USUARIO e TB_PAPEL = relacionamento ManyToMany
tenho uma terceira TB_PROJETO
para simplificar criei uma tabela intermediaria TB_PAPEL_USUARIO para fazer o relacionamento entre TB_USUARIO e TB_PAPEL e depois sucessivamente unir essa tabela com projeto
na tabela TB_PAPEL_USUARIO fiz uma PK onde tem o id do usuario e do papel
@EmbeddedId
private UsuarioPapelPK usuarioPapelPK;
agora fiz a referencia na minha TB_USUARIO
@OneToMany(mappedBy = "usuarioPapelPK.idUsuario", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<UsuarioPapel> listUsuarioPapeis;
e esta acontecendo o seguinte para adicionar novos usuarios papeis dentro de um usuario é facil simplismente seto uma pk dentro do meu usuarioPapel jogo na lista do usuario e salvo o usuario
List<UsuarioPapel> usuariosPapeis = new ArrayList<UsuarioPapel>();
for (Papel papel : listPapeis.getTarget()) {
UsuarioPapelPK usuarioPapelPK = new UsuarioPapelPK(usuario.getId(), papel.getId());
usuariosPapeis.add(new UsuarioPapel(usuarioPapelPK));
}
usuario.setListUsuarioPapeis(usuariosPapeis);
o problema é quando eu tento tirar um PapelUsuario da lista.
Eu imagino que se minha lista tinha 3 papeis usuarios e agora tem apenas dois o relacionamento entre elas deveria entender q eu quero excluir um usuarioPapel (PK = idUsuario com idPapel) do banco, e não é isso q acontece, eu tinha um usuario papel da lista salvo o usuario e quando carrego novamente esta la ainda os usuarios papel anteriores.
sera q o relacionamento entre elas esta errado…
alguem pode me ajudar???
Obrigado