[
https://issues.apache.org/jira/browse/ARIES-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Schneider resolved ARIES-1412.
----------------------------------------
Resolution: Fixed
> 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)