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); } }