[RESOLVIDO] So consigo inserir nao deletar via update (vRaptor + Hibernate + Spring)

4 respostas
david.cs20

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:
@OneToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST}, targetEntity=Usuario.class, fetch=FetchType.EAGER,  mappedBy="grupoComoEntrevistador")
	private Collection<Usuario> entrevistadores;
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;  
	}

4 Respostas

Lucas_Cavalcanti

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.

david.cs20

So que não posso excluir esse usuário.

Lucas_Cavalcanti

não precisa excluir o usuário… é só fazer um usuario.setGrupo(null), ou usuario.setGrupo(outroGrupo)

david.cs20

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 !

Criado 9 de abril de 2012
Ultima resposta 9 de abr. de 2012
Respostas 4
Participantes 2