Capturar DataBaseException

0 respostas
alisson_bsi

Boa noite galera, estou com um pequeno problema.
Não estou conseguindo capturar uma exceção lançada pelo meu BD(postgres).
Estou usando JPA e EclipseLink, abaixo segue a pilha com o erro.

O problema principal é que não consigo pegar a exceção com um try catch. Aguém poderia me ajudar? Grato!

[EL Info]: 2014-07-11 21:04:19.423ServerSession(194214444)EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b

[EL Info]: connection: 2014-07-11 21:04:20.012ServerSession(194214444)file:/C:/Users/Alisson/Desktop/Sis_Sistemas v4/build/classes/_Sis_SistemasPU login successful

[EL Warning]: 2014-07-11 21:04:25.635UnitOfWork[telefone removido])Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException

Internal Exception: org.postgresql.util.PSQLException: ERROR: new row for relation deposito violates check constraint estoque

Detalhe: Failing row contains (1, Depósito Principal, -90, 1).

Onde: SQL statement UPDATE deposito

set estoque = estoque - CAST(NEW.quantidade as int8)

where id = NEW.cod_produto””

PL/pgSQL function venda_diminui_estoque_deposito() line 3 at SQL statement

Error Code: 0

javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException

Call: INSERT INTO itemvenda (quantidade, valor, cod_produto, cod_venda) VALUES (?, ?, ?, ?)

bind => [4 parameters bound]

Query: InsertObjectQuery(modelo.Itemvenda[ id=null ])

Internal Exception: org.postgresql.util.PSQLException: ERROR: new row for relation deposito violates check constraint estoque

Detalhe: Failing row contains (1, Depósito Principal, -90, 1).

Onde: SQL statement UPDATE deposito

set estoque = estoque - CAST(NEW.quantidade as int8)

where id = NEW.cod_produto””

PL/pgSQL function venda_diminui_estoque_deposito() line 3 at SQL statement

Error Code: 0

Call: INSERT INTO itemvenda (quantidade, valor, cod_produto, cod_venda) VALUES (?, ?, ?, ?)

bind => [4 parameters bound]

Query: InsertObjectQuery(modelo.Itemvenda[ id=null ])

at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:157)

at dao.VendaJpaController.create2(VendaJpaController.java:98)

at negocio.Controlador_Venda.Acao_Dao_Venda(Controlador_Venda.java:28)

at negocio.Controlador.acao_Venda(Controlador.java:227)

at view.View_Venda_Padrao.finalizarVendaActionPerformed(View_Venda_Padrao.java:417)

at view.View_Venda_Padrao.access$400(View_Venda_Padrao.java:32)

at view.View_Venda_Padrao$5.actionPerformed(View_Venda_Padrao.java:273)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6505)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)

at java.awt.Component.processEvent(Component.java:6270)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4861)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:694)

at java.awt.EventQueue$3.run(EventQueue.java:692)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:708)

at java.awt.EventQueue$4.run(EventQueue.java:706)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException

Internal Exception: org.postgresql.util.PSQLException: ERROR: new row for relation deposito violates check constraint estoque

Detalhe: Failing row contains (1, Depósito Principal, -90, 1).

Onde: SQL statement UPDATE deposito

set estoque = estoque - CAST(NEW.quantidade as int8)

where id = NEW.cod_produto””

PL/pgSQL function venda_diminui_estoque_deposito() line 3 at SQL statement

Error Code: 0

Call: INSERT INTO itemvenda (quantidade, valor, cod_produto, cod_venda) VALUES (?, ?, ?, ?)

bind => [4 parameters bound]

Query: InsertObjectQuery(modelo.Itemvenda[ id=null ])

at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.processExceptionForCommError(DatabaseAccessor.java:1605)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:893)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:957)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:630)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558)

at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1995)

at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:296)

Pilha do erro!

at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242)

at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)

at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:377)

at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:165)

at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:180)

at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:485)

at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80)

at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90)

at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:300)

at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)

at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899)

at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798)

at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)

at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)

at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2894)

at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1797)

at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1779)

at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1730)

at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:226)

at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsForClassWithChangeSet(CommitManager.java:193)

at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:138)

at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4200)

at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1439)

at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1529)

at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:277)

at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1167)

at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:132)

 42 more

Caused by: org.postgresql.util.PSQLException: ERROR: new row for relation deposito violates check constraint estoque

Detalhe: Failing row contains (1, Depósito Principal, -90, 1).

Onde: SQL statement UPDATE deposito

set estoque = estoque - CAST(NEW.quantidade as int8)

where id = NEW.cod_produto””

PL/pgSQL function venda_diminui_estoque_deposito() line 3 at SQL statement

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)

at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:885)

 74 more
Criado 11 de julho de 2014
Respostas 0
Participantes 1