Repository: deltaspike Updated Branches: refs/heads/master 376114096 -> 5fb4ec168
DELTASPIKE-1340 Delegate to JPA 2.2 getResultStream Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/5fb4ec16 Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/5fb4ec16 Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/5fb4ec16 Branch: refs/heads/master Commit: 5fb4ec168fb8c7a7d0431e5d5e62d03979d0d8a3 Parents: 3761140 Author: Thomas Andraschko <tandrasc...@apache.org> Authored: Wed Apr 25 10:46:15 2018 +0200 Committer: Thomas Andraschko <tandrasc...@apache.org> Committed: Wed Apr 25 10:46:15 2018 +0200 ---------------------------------------------------------------------- .../builder/result/QueryProcessorFactory.java | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/5fb4ec16/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java index 89da622..d3ce308 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java @@ -18,6 +18,7 @@ */ package org.apache.deltaspike.data.impl.builder.result; +import java.lang.reflect.Method; import java.util.List; import java.util.Optional; import javax.enterprise.context.ApplicationScoped; @@ -27,6 +28,7 @@ import javax.persistence.Query; import org.apache.deltaspike.core.util.ClassUtils; import org.apache.deltaspike.data.api.Modifying; +import org.apache.deltaspike.data.api.QueryInvocationException; import org.apache.deltaspike.data.api.QueryResult; import org.apache.deltaspike.data.api.SingleResultType; import org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext; @@ -85,9 +87,36 @@ public class QueryProcessorFactory private static final class StreamQueryProcessor implements QueryProcessor { + private Method getResultStreamMethod; + + public StreamQueryProcessor() + { + try + { + getResultStreamMethod = Query.class.getMethod("getResultStream"); + } + catch (Exception e) + { + // ignore + } + } + @Override public Object executeQuery(Query query, CdiQueryInvocationContext context) { + if (getResultStreamMethod != null) + { + try + { + // delegate to JPA 2.2, which is probably optimized and fetches the data lazy + return getResultStreamMethod.invoke(query); + } + catch (Exception e) + { + throw new QueryInvocationException(e, context); + } + } + return query.getResultList().stream(); } }