Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x 98aacf6a7 -> 5d57a556c


OPENEJB-2112 if unwrap was called on the query don't recreate the query - 
backport


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5d57a556
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5d57a556
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5d57a556

Branch: refs/heads/tomee-1.7.x
Commit: 5d57a556cff1f70d43e9195e28a91ab51ead3245
Parents: 98aacf6
Author: Romain Manni-Bucau <rmannibu...@apache.org>
Authored: Thu Mar 26 13:46:01 2015 +0100
Committer: Romain Manni-Bucau <rmannibu...@apache.org>
Committed: Thu Mar 26 13:46:01 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/persistence/JtaQuery.java  | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5d57a556/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java
index 6eea5c3..c1b0017 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java
@@ -43,6 +43,7 @@ public class JtaQuery implements Query {
     private final JtaEntityManager jtaEntityManager;
     private final Collection<QueryOperation> appliedOperations = new 
ArrayList<QueryOperation>();
 
+    private boolean unwrap;
     private boolean underTx;
     private Query query;
 
@@ -56,7 +57,9 @@ public class JtaQuery implements Query {
     }
 
     private void createQuery() {
-        query = jtaEntityManager.createQuery(queryType(), entityManager, 
method, args);
+        if (!unwrap) {
+            query = jtaEntityManager.createQuery(queryType(), entityManager, 
method, args);
+        }
         if (!underTx) {
             for (final QueryOperation op : appliedOperations) {
                 query = op.apply(query);
@@ -397,6 +400,10 @@ public class JtaQuery implements Query {
      * @see javax.persistence.Query#unwrap(java.lang.Class)
      */
     public <T> T unwrap(final Class<T> cls) {
+        unwrap = true;
+        if (getClass() == cls) {
+            return cls.cast(this);
+        }
         return query.unwrap(cls);
     }
 }

Reply via email to