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 <[email protected]>
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();