Seguinte, estou com um problema…
Tenho uma base de dados Legada, onde há triggers burras, que fazem com que o banco retorne primeiramente um row effect 0, para só depois retornar o um row effect 1…
O Hibernate apenas identifica a primeira, entende que não houve efeito no banco, e lança uma exceção… e já da rollback automático, eu tenho certeza que ta tendo efeito no banco, mas não to conseguindo atualizar e inserir por conta desta trigger…
Remover a trigger do banco não é uma possibilidade, então pergunto, como fazer o Hibernate não se preucupar com o row effect ???
Segue o erro gerado pelo banco
Ps.: Eu não postei o stacktrace completo, pra não poluir muito a tela, o SQL gerado pelo banco esta ai, e ele ativa um trigger, que esta fazendo o Hibernate errar quanto a se o banco foi ou não modificado
Hibernate:
update
Pessoaf
set
ClassificacaoPessoa=?,
DataNasc=?,
CodGrauEscol=?,
CodPais=?,
Sexo=?
where
CodParceiro=?
javax.persistence.RollbackException: Error while commiting the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
at br.com.integrativa.logic.UsuarioLogic.persistir(UsuarioLogic.java:226)
....
Caused by: javax.persistence.OptimisticLockException
at org.hibernate.ejb.AbstractEntityManagerImpl.wrapStaleStateException(AbstractEntityManagerImpl.java:650)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:59)
... 37 more
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [br.com.integrativa.persistence.model.parceiro.PessoaFisica#2040513]
at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1765)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2407)
se eu utilizo a sql diretamente no banco de dados o resultado é que há a mudança, e a saida é esta…
[code]
(0 row(s) affected)
(1 row(s) affected)[/code]
essa primeira linha, com 0 row(s) affected é que esta bagunçando tudo =/