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