| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2011 17:15:24
|
johnnylcon
Debugger
![[Avatar]](/images/avatar/536c5213cb6e3f546b8a5612aa104aac.jpg)
Membro desde: 24/09/2007 10:16:45
Mensagens: 51
Localização: Campinas / SP
Offline
|
Pessoal,
Tenho a seguinte situação:
1º) Abro transação
2º) Faço um update numa tabela "A"
3º) Faço outras operações de update em outras tabelas
4º) Faço um insert na mesma tabela "A" do primeiro update
5º) Faço um Session.flush()
6º) Faço um commit no final para finalizar a transação.
Quando eu analiso o log da minha aplicação, percebo que o INSERT foi executado antes do UPDATE, mas como a minha tabela "A" tem uma trigger(before insert), preciso que o UPDATE seja obrigatoriamente executado antes do INSERT.
Com ou sem o Session.flush() no final, antes do commit tenho o mesmo resultado de não usar o Session.flush().
Tentei usar a minha trigger com before e depois com after insert e também deu na mesma.
Tentei também usar o Session.flush() logo após o update, funcionou mas li em alguns foruns que isso não é recomendado pois pode afetar o desempenho da aplicação.
Como faço para que o UPDATE seja executado antes do INSERT, na ordem que o meu método foi implementado.
Obs.:
Porque o Hibernate prioriza o INSERT, mesmo que o UPDATE venha antes do INSERT no meu código?
E o Session.flush(), qual o real papel desse comando? Hoje eu uso o flsuh somente no final da minha transação antes de fazer o transaction.commit(), é o correto?
Att.
|
Johnny L. Contiero |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2011 18:59:31
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
Qual a versão do hibernate você está utilizando? Me lembro que passei por problemas semelhantes e apenas atualizei para outra versão e resolveu o problema..
se eu n me engano, existe uma propriedade chamanda hibernate.order_updates, então sete ela para true!!!
Diga o resultado depois!
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2011 19:39:16
|
johnnylcon
Debugger
![[Avatar]](/images/avatar/536c5213cb6e3f546b8a5612aa104aac.jpg)
Membro desde: 24/09/2007 10:16:45
Mensagens: 51
Localização: Campinas / SP
Offline
|
Estou usando o hibernate 2, amanhã testarei no serviço e coloco o resultado.
Valew...
|
Johnny L. Contiero |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2011 20:25:38
|
root_
JavaGuru
![[Avatar]](/images/avatar/5dc86332c108bc63cafa5c4ea0d34ae1.jpg)
Membro desde: 05/09/2006 15:46:19
Mensagens: 206
Localização: Gurupi - Tocantins
Offline
|
johnnylcon wrote:Estou usando o hibernate 2, amanhã testarei no serviço e coloco o resultado.
Valew...
Ah! versão 2 é rox hem... já tem a 4RC1. mas utiliza a 3.6 que vai dar certo, creio eu.
|
Rogério Milhomens de Queiroz
Agile - Consultoria em Tecnologia da Informação!
http://www.agilecti.com.br
Dataview - Inteligência em Tecnologia!
http://www.dataview.com.br |
|
|
 |
|
|