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)