diff --git a/impl/src/main/java/org/jboss/seam/persistence/PersistenceContextProxyHandler.java b/impl/src/main/java/org/jboss/seam/persistence/PersistenceContextProxyHandler.java
index 092d055..9b24672 100644
--- a/impl/src/main/java/org/jboss/seam/persistence/PersistenceContextProxyHandler.java
+++ b/impl/src/main/java/org/jboss/seam/persistence/PersistenceContextProxyHandler.java
@@ -24,6 +24,7 @@
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -53,7 +54,7 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl
             return handleCreateQueryWithString(method, args);
         }
 
-        return method.invoke(delegate, args);
+        return invokeMethod(method, args);
     }
 
     protected Object handleCreateQueryWithString(Method method, Object[] args) throws Throwable {
@@ -72,7 +73,7 @@ protected Object handleCreateQueryWithString(Method method, Object[] args) throw
             }
             return query;
         } else {
-            return method.invoke(delegate, args);
+            return invokeMethod(method, args);
         }
     }
 
@@ -82,4 +83,19 @@ private Expressions getExpressions() {
         }
         return expressions;
     }
+
+    /**
+     * Invokes the method on the delegate and unwraps any original Exceptions  
+     */
+    private Object invokeMethod(Method method, Object[] args) throws Throwable {
+        try {
+            return method.invoke(delegate, args);
+        }
+        catch(InvocationTargetException e) {
+            if (e.getCause() != null) {
+                throw e.getCause();
+            }
+            throw e;
+        }
+    }
 }
diff --git a/testsuite/pom.xml b/testsuite/pom.xml
index 7fae757..228e77d 100644
--- a/testsuite/pom.xml
+++ b/testsuite/pom.xml
@@ -232,6 +232,18 @@
                     <type>pom</type>
                     <scope>test</scope>
                 </dependency>
+
+                <dependency>
+                    <groupId>org.hibernate</groupId>
+                    <artifactId>hibernate-search</artifactId>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.jboss.logging</groupId>
+                            <artifactId>jboss-logging</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
             </dependencies>
 
             <build>
@@ -274,6 +286,18 @@
                     <type>pom</type>
                     <scope>test</scope>
                 </dependency>
+
+                <dependency>
+                    <groupId>org.hibernate</groupId>
+                    <artifactId>hibernate-search</artifactId>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.jboss.logging</groupId>
+                            <artifactId>jboss-logging</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
             </dependencies>
 
             <build>
diff --git a/testsuite/src/test/java/org/jboss/seam/persistence/test/ManagedPersistenceContextTestBase.java b/testsuite/src/test/java/org/jboss/seam/persistence/test/ManagedPersistenceContextTestBase.java
index 3e404ed..f2b2276 100644
--- a/testsuite/src/test/java/org/jboss/seam/persistence/test/ManagedPersistenceContextTestBase.java
+++ b/testsuite/src/test/java/org/jboss/seam/persistence/test/ManagedPersistenceContextTestBase.java
@@ -20,6 +20,7 @@
 
 import javax.inject.Inject;
 import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
 import javax.transaction.HeuristicMixedException;
 import javax.transaction.HeuristicRollbackException;
 import javax.transaction.NotSupportedException;
@@ -66,5 +67,26 @@ public void testManagedPersistenceContext() throws NotSupportedException, System
         Assert.assertEquals(1, hotels.size());
         transaction.rollback();
     }
+    
+    @Test(expected = EntityNotFoundException.class)
+    public void testManagedPersistenceContextException() throws NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException {
+        transaction.begin();
+        Hotel h = new Hotel("test3", "Purkynova", "Brno", "CZ", "63100", "Czech Republic");
+        em.persist(h);
+        em.flush();
+        transaction.commit();
 
+        transaction.begin();
+        int affected = em.createQuery("delete from Hotel h where h.name = :name").setParameter("name", h.getName()).executeUpdate();
+        Assert.assertEquals(1, affected);
+        transaction.commit();
+        
+        try {
+            transaction.begin();
+            em.refresh(h);
+        }
+        finally {
+            transaction.rollback();
+        }
+    }
 }