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/90e52733
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/90e52733
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/90e52733

Branch: refs/heads/master
Commit: 90e527334502558528da8b1910c42eb0b740f778
Parents: a43c1e6
Author: Maxim Petrusevich <maks1...@gmail.com>
Authored: Mon Feb 12 09:04:54 2018 +0300
Committer: Maxim Petrusevich <maks1...@gmail.com>
Committed: Mon Feb 12 09:04:54 2018 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/query/SQLSelect.java     |  4 +++-
 .../apache/cayenne/access/JointPrefetchIT.java  | 21 ++++++++++----------
 2 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/90e52733/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
index 579dc5f..dafc362 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
@@ -263,7 +263,9 @@ public class SQLSelect<T> extends IndirectQuery implements 
Select<T> {
                template.setDefaultTemplate(getSql());
                template.setCacheGroup(cacheGroup);
                template.setCacheStrategy(cacheStrategy);
-               template.addPrefetch(prefetches);
+               if (prefetches != null) {
+                       template.addPrefetch(prefetches);
+               }
 
                if (positionalParams != null) {
                        template.setParamsList(positionalParams);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/90e52733/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index 6cada72..7f202ed 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -406,17 +406,17 @@ public class JointPrefetchIT extends ServerCase {
     @Test
     public void testJointPrefetchSQLSelectToMany() throws Exception {
         createJointPrefetchDataSet();
-        SQLSelect sqlSelect = SQLSelect.query(Artist.class, "SELECT "
+
+        @SuppressWarnings("unchecked")
+        final List<Artist> objects = SQLSelect.query(Artist.class, "SELECT "
                 + "#result('PAINTING_ID' 'int' '' 
'paintingArray.PAINTING_ID'), "
                 + "#result('ARTIST_NAME' 'String'), "
                 + "#result('DATE_OF_BIRTH' 'java.util.Date'), "
                 + "#result('t0.ARTIST_ID' 'int' '' 'ARTIST_ID') "
                 + "FROM ARTIST t0, PAINTING t1 "
-                + "WHERE t0.ARTIST_ID = t1.ARTIST_ID");
-        sqlSelect.addPrefetch(Artist.PAINTING_ARRAY.joint());
-
-        @SuppressWarnings("unchecked")
-        final List<Artist> objects = (List<Artist>)sqlSelect.select(context);
+                + "WHERE t0.ARTIST_ID = t1.ARTIST_ID")
+                .addPrefetch(Artist.PAINTING_ARRAY.joint())
+                .select(context);
         queryInterceptor.runWithQueriesBlocked(() -> {
             assertNotNull(objects);
             assertEquals(2, objects.size());
@@ -434,14 +434,13 @@ public class JointPrefetchIT extends ServerCase {
     @Test
     public void testJointPrefetchSQLSelectNestedJoint() throws Exception {
         createJointPrefetchDataSet();
-        SQLSelect sqlSelect = SQLSelect.query(Artist.class, "SELECT "
+        SQLSelect.query(Artist.class, "SELECT "
                 + "#result('GALLERY_ID' 'int' '' 
'paintingArray.toGallery.GALLERY_ID'),"
                 + "#result('GALLERY_NAME' 'String' '' 
'paintingArray.toGallery.GALLERY_NAME'),"
                 + "#result('t0.ARTIST_ID' 'int' '' 'ARTIST_ID') "
-                + "FROM ARTIST t0, GALLERY t2 ");
-        
sqlSelect.addPrefetch(Artist.PAINTING_ARRAY.dot(Painting.TO_GALLERY).joint());
-
-        sqlSelect.select(context);
+                + "FROM ARTIST t0, GALLERY t2 ")
+                
.addPrefetch(Artist.PAINTING_ARRAY.dot(Painting.TO_GALLERY).joint())
+                .select(context);
         queryInterceptor.runWithQueriesBlocked(() -> {
             DataObject g1 = (DataObject) context.getGraphManager().getNode(
                     new ObjectId("Gallery", Gallery.GALLERY_ID_PK_COLUMN, 
33001)

Reply via email to