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

ntimofeev pushed a commit to branch 5.0-FIX-CAY-2844-joint-prefetch+qualifier
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 24e2f5474df1ab535bce13a33c477a01ed16222c
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Mon Feb 12 16:11:12 2024 +0400

    CAY-2844 Joint prefetch doesn't use ObjEntity qualifier
     - add failing test case
---
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java | 72 ++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git 
a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java 
b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
index e5bffea2d..68b722774 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
@@ -128,6 +128,78 @@ public class CDOQualifiedEntitiesIT extends RuntimeCase {
         }
     }
 
+    @Test
+    public void testJointPrefetchToMany() throws Exception {
+        if (accessStackAdapter.supportsNullBoolean()) {
+
+            createReadToManyDataSet();
+
+            List<Qualified1> roots = ObjectSelect.query(Qualified1.class)
+                    .prefetch(Qualified1.QUALIFIED2S.joint())
+                    .select(context);
+
+            assertEquals(1, roots.size());
+
+            Qualified1 root = roots.get(0);
+
+            assertEquals("OX1", root.getName());
+
+            List<Qualified2> related = root.getQualified2s();
+            assertEquals(1, related.size());
+
+            Qualified2 r = related.get(0);
+            assertEquals("OY1", r.getName());
+        }
+    }
+
+    @Test
+    public void testDisjointPrefetchToMany() throws Exception {
+        if (accessStackAdapter.supportsNullBoolean()) {
+
+            createReadToManyDataSet();
+
+            List<Qualified1> roots = ObjectSelect.query(Qualified1.class)
+                    .prefetch(Qualified1.QUALIFIED2S.disjoint())
+                    .select(context);
+
+            assertEquals(1, roots.size());
+
+            Qualified1 root = roots.get(0);
+
+            assertEquals("OX1", root.getName());
+
+            List<Qualified2> related = root.getQualified2s();
+            assertEquals(1, related.size());
+
+            Qualified2 r    = related.get(0);
+            assertEquals("OY1", r.getName());
+        }
+    }
+
+    @Test
+    public void testDisjointByIdPrefetchToMany() throws Exception {
+        if (accessStackAdapter.supportsNullBoolean()) {
+
+            createReadToManyDataSet();
+
+            List<Qualified1> roots = ObjectSelect.query(Qualified1.class)
+                    .prefetch(Qualified1.QUALIFIED2S.disjointById())
+                    .select(context);
+
+            assertEquals(1, roots.size());
+
+            Qualified1 root = roots.get(0);
+
+            assertEquals("OX1", root.getName());
+
+            List<Qualified2> related = root.getQualified2s();
+            assertEquals(1, related.size());
+
+            Qualified2 r = related.get(0);
+            assertEquals("OY1", r.getName());
+        }
+    }
+
     @Test
     public void testReadToOne() throws Exception {
         if (accessStackAdapter.supportsNullBoolean()) {

Reply via email to