GRAVE: Could not synchronize database state with session
07/12/2011
0
Estou desenvolvendo uma aplicação JSE com um CRUD básico , para persistência utilizo Hibernate. Bem , irei passar a ideia do sistema: tenho uma tela de cadastro que funciona blz, os dados estou apresentando em um JTable, onde dou a opção de alterar ou excluir algum registro. Ao clicar em alterar eu pego os dados da linha selecionada dou um setVisible(true) abro minha tela de alteração e na hora que clico no botão –confirmar alteracao- o seguinte erro acontece:
GRAVE: Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1.
Algum dos mestres já passaram por isto? Alguma dica ou solução?
Lucas Costa
Posts
07/12/2011
Anthony Accioly
1. O mapeamento do ID da entidade difere da PK no banco. (Nesse caso, ao fazer o update, o hibernate não está encontrando a linha a ser atualizada)... Para identificar esse erro, habilite o log do hibernate (setando os parâmetros: hibernate.show_sql e hibernate.format_sql) e verifique a clausula where comando de update.
2. Você está usando um objeto para representar pk composta e esqueceu de sobreescrever os métodos equals e hashCode.
3. Você está esquecendo de abrir / comitar transações e fechar sua Session (ou EntityManager no caso de JPA). Veja aqui: http://www.coderanch.com/t/216734/ORM/java/Hibernate-Batch-update-returned-unexpected.
Tente debugar esses três cenários e se precisar de mais ajuda poste os pedaços relevantes do código para gente (mapeamento das pks e código que manipula a sessão).
Abraços.
07/12/2011
Anthony Accioly
4. Veja se os parâmetros do ID estão preenchidos corretamente no objeto antes do update. (Imprima os valores do ID na tela antes de executar o update, ou monitore as variáveis de ID através de um debugador).
07/12/2011
Davi Costa
att Davi
15/12/2011
Lucas Costa
Meu caro Davi Gomes, o objeto esta sendo persistido no banco, imprimi o valor dele para ter certeza disso, neste caso ele de fato nao é transiente. Tentarei as dicas 1,2 e 3 do mestre Anthony Accioly e vamo ve oque consigo. Obrigado pela colaboração !!
Att
Lucas
15/12/2011
Lucas Costa
Abraco.
15/12/2011
Robson Teixeira
e parabens por ter contado a solução e não esqueça de fechar o chamado ok?
16/12/2011
Lucas Costa
16/12/2011
Anthony Accioly
Após uma resposta qualquer (como essa minha) aparece a opção para fechar.
Abraços,
17/12/2011
Lucas Costa
20/12/2011
Dyego Carmo
Resolvido ? Se sim , poderia fechar o chamado ?
Valeu !
20/12/2011
Lucas Costa
09/01/2012
Dyego Carmo
Clique aqui para fazer login e interagir na Comunidade :)