You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/02/14 13:33:42 UTC
[3/5] cayenne git commit: CAY-2406 Add prefetch-related API to
SQLSelect
CAY-2406 Add prefetch-related API to SQLSelect
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9183314a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9183314a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9183314a
Branch: refs/heads/master
Commit: 9183314a9e1d361e14c13cd5f208a71533b5fe8e
Parents: 90e5273
Author: Maxim Petrusevich <ma...@gmail.com>
Authored: Wed Feb 14 10:30:37 2018 +0300
Committer: Maxim Petrusevich <ma...@gmail.com>
Committed: Wed Feb 14 10:30:37 2018 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/query/SQLTemplate.java | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9183314a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
index 5a84322..c86bb00 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplate.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.query;
+import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.QueryEngine;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
@@ -34,7 +35,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.TreeSet;
import java.util.function.Function;
import java.util.stream.Stream;
@@ -502,9 +502,24 @@ public class SQLTemplate extends AbstractQuery implements ParameterizedQuery {
* @since 4.0
*/
public void addPrefetch(PrefetchTreeNode prefetchElement) {
+ if (hasDisjointNode(prefetchElement)) {
+ throw new CayenneRuntimeException("This query supports only 'joint' and 'disjointById' prefetching semantics.");
+ }
metaData.mergePrefetch(prefetchElement);
}
+ private boolean hasDisjointNode(PrefetchTreeNode prefetchElement) {
+ if (prefetchElement.isDisjointPrefetch()) {
+ return true;
+ }
+ for (PrefetchTreeNode child : prefetchElement.getChildren()) {
+ if (hasDisjointNode(child)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* @since 1.2
*/