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.