Alguem sabe como Ignorar Row Effect com Hibernate ou JPA?!?!?!?

0 respostas
Lavieri

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

(0 row(s) affected)

(1 row(s) affected)

essa primeira linha, com 0 row(s) affected é que esta bagunçando tudo =/

Criado 18 de agosto de 2009
Respostas 0
Participantes 1