This is an automated email from the ASF dual-hosted git repository.

aadamchik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 14aa49d  confirming that disjoint-by-id prefetches work for SQLSelect
14aa49d is described below

commit 14aa49d560984223077928c5a02b7155abcd6cdc
Author: Andrus Adamchik <and...@objectstyle.com>
AuthorDate: Thu Jul 30 09:23:48 2020 +0300

    confirming that disjoint-by-id prefetches work for SQLSelect
---
 .../access/DataContextDisjointByIdPrefetchIT.java  | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index cede796..33b59d8 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -22,6 +22,7 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.query.ObjectSelect;
+import org.apache.cayenne.query.SQLSelect;
 import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
@@ -139,6 +140,39 @@ public class DataContextDisjointByIdPrefetchIT extends 
ServerCase {
     }
 
     @Test
+    public void testOneToMany_SQLSelect() throws Exception {
+        createArtistWithTwoPaintingsDataSet();
+
+        List<Artist> result = SQLSelect.query(Artist.class, "SELECT "
+                + "#result('ARTIST_NAME' 'String'), "
+                + "#result('DATE_OF_BIRTH' 'java.util.Date'), "
+                + "#result('t0.ARTIST_ID' 'int' '' 'ARTIST_ID') "
+                + "FROM ARTIST t0")
+                .addPrefetch(Artist.PAINTING_ARRAY.disjointById())
+                .select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Artist b1 = result.get(0);
+
+            @SuppressWarnings("unchecked")
+            List<Painting> toMany = (List<Painting>) 
b1.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
+            assertNotNull(toMany);
+            assertFalse(((ValueHolder) toMany).isFault());
+            assertEquals(2, toMany.size());
+
+            List<String> names = new ArrayList<>();
+            for (Painting b : toMany) {
+                assertEquals(PersistenceState.COMMITTED, 
b.getPersistenceState());
+                names.add(b.getPaintingTitle());
+            }
+
+            assertTrue(names.contains("Y1"));
+            assertTrue(names.contains("Y2"));
+        });
+    }
+
+    @Test
     public void testManyToOne() throws Exception {
         createArtistWithTwoPaintingsDataSet();
 

Reply via email to