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

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

commit 4ac831d34fc519f996cd44cbb5bd00dcb7250e03
Author: Andrus Adamchik <[email protected]>
AuthorDate: Thu Jul 30 09:26:30 2020 +0300

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

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 e75f029..c092f59 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
@@ -146,7 +146,7 @@ public class DataContextDisjointByIdPrefetchIT extends 
ServerCase {
         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') "
+                + "#result('ARTIST_ID' 'int') "
                 + "FROM ARTIST t0")
                 .addPrefetch(Artist.PAINTING_ARRAY.disjointById())
                 .select(context);
@@ -190,6 +190,32 @@ public class DataContextDisjointByIdPrefetchIT extends 
ServerCase {
     }
 
     @Test
+    public void testManyToOne_SQLSelect() throws Exception {
+        createArtistWithTwoPaintingsDataSet();
+
+        List<Painting> result = SQLSelect.query(Painting.class, "SELECT "
+                + "#result('ESTIMATED_PRICE' 'BigDecimal'), "
+                + "#result('PAINTING_TITLE' 'String'), "
+                + "#result('PAINTING_DESCRIPTION' 'String'), "
+                + "#result('GALLERY_ID' 'int'), "
+                + "#result('PAINTING_ID' 'int'), "
+                + "#result('ARTIST_ID' 'int') "
+                + "FROM PAINTING")
+                .addPrefetch(Painting.TO_ARTIST.disjointById())
+                .select(context);
+
+        queryInterceptor.runWithQueriesBlocked(() -> {
+            assertFalse(result.isEmpty());
+            Painting p1 = result.get(0);
+            assertEquals(PersistenceState.COMMITTED, p1.getPersistenceState());
+
+            assertNotNull(p1.getToArtist());
+            assertEquals(PersistenceState.COMMITTED, 
p1.getToArtist().getPersistenceState());
+            assertEquals("X", p1.getToArtist().getArtistName());
+        });
+    }
+
+    @Test
     public void testFetchLimit() throws Exception {
         createThreeArtistsWithPlentyOfPaintingsDataSet();
 

Reply via email to