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();
