Hibernate atualizar objeto já carregado

2 respostas
homisinho

Bom dia a todos do forum, estou com alguns problemas na utilização do hibernate pra variar um pouco.
Em um tópico antigo coloquei uma dúvida q tinha com relação a atualizar dar update nas chaves primarias de alguns objetos.
Para fazer isso criei query nativa e dei o update, descobri q para o hibernate atualizar o objeto e ver a mudança eu teria q fechar a sessão e abrir outra, foi o que eu fiz. Mas me deparei com um problema eu já tenho um objeto principal carregado e preciso atualizar o mesmo e recebo a seguinte mensagem que é claro q o hibernate iria gerar…

“a different object with the same identifier value was already associated with the session”…

As linhas onde da o erro:

daounidade.beginTransaction();
            unidade = (Unidades) daounidade.findById(unidade.getCodunidade());
            unidade.getPendulosCollection().add(pend);

“unidade” já tinha vindo do banco, mas o problema é q eu alterei a chave primaria de alguns objetos dessa collection onde estou adicionando um pend novo…

Se eu simplesmente persistir unidade ela salva os dados como eram antes de eu utilizar as query nativas…

como eu posso recarregar um objeto já carregado, sem q o hibernate de essa mensagem?

2 Respostas

L

homisinho,

jah tentou usar o comando merge do hibernate? q eu saiba este comando serve para atualizar os objetos que estão na session do hibernate…

homisinho

Realmente o Merge é pra isso, mas o hibernate n esta deixando eu selecionar o mesmo objeto.
Pra solucionar o meu problema eu adicionei toda uma collection, sei q isso vai prejudicar o meu desempenho e muito, mas fazer o q?

daounidade.beginTransaction();
 unidade.setPendulosCollection(daounidade.findPendUnid(unidade.getCodunidade()));

Dessa forma não deu erro, e a minha unidade carregou as alterações de chaves primarias que eu fiz utilizando query nativa.
Deve ter uma outra forma de fazer o hibernate recarregar os objetos do banco, estou consultando o google todos os dias, mas n encontrei nada ainda.

Criado 16 de fevereiro de 2009
Ultima resposta 17 de fev. de 2009
Respostas 2
Participantes 2