[AJUDEM] - Ordem de execução de operações UPDATE e INSERT

3 respostas
johnnylcon

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.

3 Respostas

root_

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!

johnnylcon

Estou usando o hibernate 2, amanhã testarei no serviço e coloco o resultado.

Valew…

root_

johnnylcon:
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.

Criado 31 de agosto de 2011
Ultima resposta 31 de ago. de 2011
Respostas 3
Participantes 2