Christian Schneider created ARIES-1412:
------------------------------------------
Summary: EmProxy needs to unwrap InvocationTargetException
Key: ARIES-1412
URL: https://issues.apache.org/jira/browse/ARIES-1412
Project: Aries
Issue Type: Bug
Components: JPA
Affects Versions: jpa-2.1.0
Reporter: Christian Schneider
Assignee: Christian Schneider
Fix For: jpa-2.2.0
Currently EmProxy simply throws the exception from the invocation. If a
PersistenceException is thrown inside the persistence provider it will surface
as an InvocationtargetException on the InvocationHandller. In the log it will
look like below.
It should be the real PersistenceException though. This works by unwrapping the
InvocationtargetException.
----
2015-09-20 11:37:51,197 | WARN | pool-39-thread-1 | InitHelper
| 63 - net.lr.tasklist.cdi.tasklist-persistence - 1.0.0.SNAPSHOT |
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy33.flush(Unknown
Source)[58:javax.persistence:2.1.0.v201304241213]
at Proxy4d1c1d44_8813_413d_8045_ba268a99b2c0.flush(Unknown Source)[:]
at
net.lr.tasklist.persistence.impl.TaskServiceImpl.addTask(TaskServiceImpl.java:39)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
at Proxy3316312c_9444_405a_90e5_af21ec088f0b.addTask(Unknown Source)[:]
at
net.lr.tasklist.persistence.impl.InitHelper.addSampleTask(InitHelper.java:38)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
at
net.lr.tasklist.persistence.impl.InitHelper.access$0(InitHelper.java:36)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
at
net.lr.tasklist.persistence.impl.InitHelper$1.run(InitHelper.java:27)[63:net.lr.tasklist.cdi.tasklist-persistence:1.0.0.SNAPSHOT]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_60]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_60]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_60]
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)[:1.7.0_60]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_60]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_60]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_60]
at
org.apache.aries.jpa.support.osgi.impl.EmProxy.invoke(EmProxy.java:41)[74:org.apache.aries.jpa.support:2.2.0.SNAPSHOT]
... 10 more
Caused by: javax.persistence.PersistenceException:
org.hibernate.exception.ConstraintViolationException: could not execute
statement
at
org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
at
org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
at
org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
at
org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1338)
... 15 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not
execute statement
at
org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129)
at
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
at
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
at
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:211)
at
org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581)
at
org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104)
at
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
at
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349)
at
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
at
org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)
at
org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1335)
... 15 more
Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation:
"PRIMARY_KEY_2 ON PUBLIC.TASK(ID)"; SQL statement:
insert into Task (description, dueDate, finished, title, id) values (?, ?, ?,
?, ?) [23505-172]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.index.BaseIndex.getDuplicateKeyException(BaseIndex.java:83)
at org.h2.index.TreeIndex.add(TreeIndex.java:65)
at org.h2.table.RegularTable.addRow(RegularTable.java:124)
at org.h2.command.dml.Insert.insertRows(Insert.java:126)
at org.h2.command.dml.Insert.update(Insert.java:86)
at org.h2.command.CommandContainer.update(CommandContainer.java:79)
at org.h2.command.Command.executeUpdate(Command.java:235)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:154)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:140)
at
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
... 25 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)