| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 11:33:55
|
praa99
Smalltalk
Membro desde: 13/04/2005 10:12:24
Mensagens: 3
Offline
|
Estou com um problema que não consigo solucionar:
O método faz uma serie de operações de delete em tabelas. Mas um dos registros que deve ser deletado esta em uma tabela que tem relacionamento com outras tabelas, mas q tambem estou deletando na mesma transação. Resumindo, quando o método que executo chama o session.flush(), me retorna o seguinte erro.
SEVERE: Could not synchronize database state with session
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)
Alguém pode me ajudar? Obrigado...
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 11:37:29
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
Diga qual versão do Hibernate você está utilizando, a ordem em que você está excluindo as entidades e o mapeamento dos relacionamentos entre elas.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 11:45:51
|
legionarioba
JavaTeenager
![[Avatar]](/images/avatar/d58072be2820e8682c0a27c0518e805e.jpg)
Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline
|
Não me recordo bem agora, mas veja nos seus mapeamentos o uso dos atributos inverse e do cascade tb, provavelmente na primeira exclusão que você está executando já estejam sendo deletados os registros relacionados que você referencia em algum delete posterior...
[]'s
|
http://silvioluiz.wordpress.com
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 14:30:13
|
praa99
Smalltalk
Membro desde: 13/04/2005 10:12:24
Mensagens: 3
Offline
|
É mais ou menos assim:
Tres entidades X, Y e Z
Y é um atributo da entidade X e Z é um atributo da entidade Y.
Primeiro eu faço session.delete(objsZ)
Depois, session.delete(objsY) e por ultimo session.delete(objX).
No session.flush(), ocorre o erro que mencionei.
Mas quando eu comento o ultimo session.delete (do obj X), deleta-se normalmente das outras duas tabelas e não ocorre o erro.
no mapeamento dos relacionamentos, os atributos estão inverse="true" e cascade="all-delete-orphan", para todos os relacionamentos.
Não sei se esclareci meu problema....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 14:35:24
|
mister__m
Virtual Machine Man
![[Avatar]](/images/avatar/89b9c689a57b82e59074c6ba09aa394d.jpg)
Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline
|
Se entendi direito sua explicação, acho que você precisa, antes de chamar o delete, desfazer a associação entre as entidades na mão. Não lembro como o all-delete-orphan, mas acho que um delete na instância de X diretamente deveria funcionar também pra algumas opções de cascade.
|
Michael Nascimento Santos, aka Mister M
Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2005 14:49:53
|
legionarioba
JavaTeenager
![[Avatar]](/images/avatar/d58072be2820e8682c0a27c0518e805e.jpg)
Membro desde: 24/03/2003 00:40:42
Mensagens: 171
Localização: Salvador
Offline
|
Procure a revista MundoJava que vem falando sobre Hibernate(não me recordo bem qual o número..) , ela fala bem sobre esse inverse. Significa que quem controla a transação, no caso, quem na prática persiste, é aquele que possui inverse=false. Não me lembro bem como é o comportamento pra delete, mas tente o seguinte:
1) Dê um load nos objetos Y e Z, adicione esses objetos ao X :
y.addZ(meuZ)
x.addY( meuY), e ai execute o delete pra X
2) Apenas altere o inverse pra false. e execute o código como você escreveu
Dica: Use o Log4j pra dar uma olhada no console nas querys geradas pelo Hibernate
Poste o resultado !
[]'s
This message was edited 1 time. Last update was at 13/04/2005 15:39:29
|
http://silvioluiz.wordpress.com
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2005 17:31:59
|
praa99
Smalltalk
Membro desde: 13/04/2005 10:12:24
Mensagens: 3
Offline
|
Só agora tive tempo de responder.. Peço desculpas..
Então, peguei a revista q vc falou mas lah nao explica mundo bem nao, fala bem pouca coisa sobre isso...
Tentei seguir tua dica tbem e nada...
Acabei deixando sem transacao...
Agora estou com outro problema:
Toda vez q faço a primeira consulta ao BD após o Tomcat ser 'startado', aparece entre as mensagens uma que é a seguinte:
INFO: Not binding factory to JNDI, no JNDI name configured
o q fazer? Se alguem puder ajudar, agradeço!!
valeu,
|
|
|
 |
|
|