Problemas com o hibernate

Boa noite galera, estou com um problema no hibernate

Tenho uma aplicação de uma locadora, na primeira vez que executo a tela de Devolução, não acontece nenhum erro,
o filme vai na tabela estoque e atualiza a quantidade de filmes e vai na tabela locação e exclui a locação, porém se eu fizer
a devolução de outra locação com o mesmo filme que eu fiz a devolução a primeira vez dá o seguinte erro de hibernate:

[code]aused by: java.sql.BatchUpdateException: ORA-00001: restrição exclusiva (SYSTEM.SYS_C006552) violada

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10657)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 34 more

Exception in thread “AWT-EventQueue-0” javax.persistence.RollbackException: Error while commiting the transaction
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
at views.JanelaDevolucao$2.actionPerformed(JanelaDevolucao.java:340)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
… 26 more
Caused by: java.sql.BatchUpdateException: ORA-00001: restrição exclusiva (SYSTEM.SYS_C006552) violada

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10657)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 34 more[/code]

[b]O que pode ser pessoal?

Olá,

o erro:

    1. caused by: java.sql.BatchUpdateException: ORA-00001: restrição exclusiva (SYSTEM.SYS_C006552) violada

aparenta ser erro de constraint do Oracle e não erro do Hibernate em si. Para tirar uma dúvida: A cada locação o seu sistema grava na tabela “LOCACAO” e a cada devolução, ele exclui um registro da mesma tabela “LOCACAO”?..

Até mais

[b]Ola Luiz Roberto,

é isso que a aplicação faz.

No caso, vc tem que dar um select "select * from all_constraints a where a.constraint_name like ‘%SYS_C006552%’ " para verificar qual objeto do banco de dados lança esta constraint. Não sei se seria o seu caso, mas pode ser que ao deletar um registro da tabela, ele possa ser uma referencia FK que é utilizada por outra tabela.
Apenas uma dica… Não seria melhor criar um campo (flag) na tabela LOCACAO para indicar o status da locação?.. Tipo status: fechado, aberto…

inté

Ola luiz roberto, queria primeiramente te agradecer, e dizer que vou tentar aplicar esse campo flag, obrigado pela dica… vlw.

Olá galera do GUJ…

Preciso de ajuda pq estou com o mesmo problema levantado neste topico. Contudo, no ambiente de desenvolvimento nao aparece. Apenas no de homologacao…

Fiz o que o luizrobertofreitas falou e dei um

mas nao veio nenhum registro…

Será que alguem saberia me dizer oq pode estar acontecendo…

ahh tambem verifiquei e esta criando um objeto novo em cada insert/update. Estou usando o comando

getEntityManager().merge(entity);

agradeço a atencao… :wink: