diff --git a/jpa-container-advancedtestbundle/pom.xml b/jpa-container-advancedtestbundle/pom.xml
index 4cb82ea..a4ae0be 100644
--- a/jpa-container-advancedtestbundle/pom.xml
+++ b/jpa-container-advancedtestbundle/pom.xml
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.aries.jpa</groupId>
     <artifactId>org.apache.aries.jpa.container.advanced.itest.bundle</artifactId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
     <name>Test Bundle for Aries JPA Container advanced iTests</name>
 
diff --git a/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java b/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java
index 7e94baf..2a2ed88 100644
--- a/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java
+++ b/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManagerHandler.java
@@ -1,6 +1,7 @@
 package org.apache.aries.jpa.container.context.transaction.impl;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -188,6 +189,28 @@
           new PersistenceException(NLS.MESSAGES.getMessage("wrong.JPA.version", new Object[]{
               method.getName(), delegate
           }), e);
+        } catch (final Throwable tActual) {
+            Throwable t = tActual;
+
+            while (t != null && t instanceof InvocationTargetException) {
+                t = ((InvocationTargetException) t).getTargetException();
+            }
+            if (t == null) {
+                throw new PersistenceException("unknown invocation target exception", tActual);
+            }
+
+            if (t instanceof RuntimeException) {
+                throw (RuntimeException) t;
+            }
+            if (t instanceof Error) {
+                throw (Error) t;
+            }
+            for (Class<?> declaredException : method.getExceptionTypes()) {
+                if (declaredException.isAssignableFrom(t.getClass())) {
+                    throw t;
+                }
+            }
+            throw new PersistenceException("unexpected un-declared exception " + tActual, tActual);
         }
         return res;
 
diff --git a/jpa-container-itest/pom.xml b/jpa-container-itest/pom.xml
index 1e2e95a..d6aad08 100644
--- a/jpa-container-itest/pom.xml
+++ b/jpa-container-itest/pom.xml
@@ -301,7 +301,7 @@
         <dependency>
             <groupId>org.apache.aries.jpa</groupId>
             <artifactId>org.apache.aries.jpa.container.advanced.itest.bundle</artifactId>
-            <version>1.0.1-SNAPSHOT</version>
+            <version>2.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
