Tenho um método a qual crio uma grupo de usuários porem só consigo inserir novos usuários a lista no consigo remove-los.
Grupo:[code]
@OneToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST}, targetEntity=Usuario.class, fetch=FetchType.EAGER, mappedBy="grupoComoEntrevistador")
private Collection<Usuario> entrevistadores;[/code]
GrupoDAO:
public Grupo alterar(Grupo grupo) throws CadastroException {
Collection<Usuario> entrevistadores = new ArrayList<Usuario>();
for (Usuario entrevistador : grupo.getEntrevistadores()) {
Usuario entrevistadorPersistente = usuarioDao.get(entrevistador.getId());
entrevistadores.add(entrevistadorPersistente);
entrevistadorPersistente.setGrupoComoEntrevistador(grupo);
usuarioDao.Update(entrevistadorPersistente);
}
grupo.setEntrevistadores(entrevistadores);
Usuario supervisor = grupo.getSupervisor();
grupo.setSupervisor(usuarioDao.get(supervisor.getId()));
Update(grupo);
return grupo;
}
se o relacionamento é mappedBy, não adianta mexer nele, não vai mexer no no banco…
vc precisa pegar o usuario e remover o grupo dele.
So que não posso excluir esse usuário.
não precisa excluir o usuário… é só fazer um usuario.setGrupo(null), ou usuario.setGrupo(outroGrupo)
Obrigado mais uma vez lucas.
Resolvi da seguinte maneira coloquei uma anotação @JoinCollumn e executo um merge antes do update
@OneToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST}, targetEntity=Usuario.class, fetch=FetchType.EAGER)
@JoinColumn(name="grupoComoEntrevistador_id")
private Collection<Usuario> entrevistadores;
public Grupo alterar(Grupo grupo) throws CadastroException {
Collection<Usuario> entrevistadores = new ArrayList<Usuario>();
for (Usuario entrevistador : grupo.getEntrevistadores()) {
Usuario entrevistadorPersistente = usuarioDao.get(entrevistador.getId());
entrevistadores.add(entrevistadorPersistente);
entrevistadorPersistente.setGrupoComoEntrevistador(grupo);
usuarioDao.merge(entrevistadorPersistente);
}
grupo.setEntrevistadores(entrevistadores);
Usuario supervisor = grupo.getSupervisor();
grupo.setSupervisor(usuarioDao.get(supervisor.getId()));
Update(grupo);
return grupo;
}
Obrigado e abraços !