A lançada quando é executado o commit é: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.interativati.sigv.cliente.ClienteConcorrente#1]
Bom se no momento que o JSP termina de ser renderizado o FilterServlet fecha a Session, quando o formulário solicita a execução dessa Action está Session não possui nenhum objeto associado a ela, contúdo só existiria um objeto clienteConcorrente associado a ela.
HibernateUtility.getSession().update(objeto);
O objeto passado no parâmetro é o objeto nucleo
Toda ajuda é bem vinda!
Agradeço...
T
tralala
Sergio,
No seu caso é o seguinte:
Se vc esta tentando dar um update, vc teve de fazer um load() ou get() para o Hibernate fazer o retrieve. Quando executa um save()/update() ele tenta associar o objeto a HS, e certamente este mesmo objeto ou outro com a mesma PK ja esta associada a HS.
exemplificando:
como deve estar:
-> get() objeto
-> inicia transacao
-> altera objeto
-> update() // ERRADO, pq o como a sessao não foi fechada ela ja esta associado, e não precisa de update().
-> manda commitar
se vc fecha a sessão seria:
-> get() objeto
-> fecha sessao
-> altera objeto
-> inicia transacao
-> update() objeto // isso vai re-associalo a Sessão, nesse caso esta correto pq como sessao foi fechada, não existe outro associado
-> manda commitar
T
the_negao
tralala,
Funcionou beleza a sua dica, e bem mais simples do que eu estava implementando!
Como estou usando Filtro, só fiz colocar na Action que dá Update: O get do objeto Nucleo a ser modificado
Set nos campos a serem modificados e pronto!
O begin e o commit da transação e o close da session é feita pelo Filtro.
Valeu ae pela dica!
T
tralala
nads
agora só falta eu resolver o meu objeto-fantasma huaeuhea :evil: