From cf8f09944728577a6d5a33b857617e8e2b60ed74 Mon Sep 17 00:00:00 2001 From: Alexander Wagner Date: Wed, 20 Jul 2022 08:54:00 +0200 Subject: [PATCH] test for findSingleAttributeList o2m distinct --- .../query/other/TestQuerySingleAttribute.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java index df9d0f3b0..895f24dd3 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java @@ -756,6 +756,27 @@ public class TestQuerySingleAttribute extends BaseTestCase { } } + @Test + public void oneToMany_distinct() { + + ResetBasicData.reset(); + + Query query = DB.find(Customer.class) + .fetch("orders", "status") + .setDistinct(true); + + List statusList = query.findSingleAttributeList(); + assertSql(query).contains("select distinct t1.status from o_customer t0 " + + "left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null"); + // query was: select distinct t1.status from o_customer t0 + // left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null order by t0.id + // -> why order by t0.id? + // Results in JdbcSQLSyntaxErrorException: + // Order by expression "T0.ID" must be in the result list in this case + assertThat(statusList).hasSize(4); + assertThat(statusList).contains(null, Order.Status.NEW, Order.Status.COMPLETE, Order.Status.SHIPPED); + } + @BeforeEach public void setup() { MainEntity e1 = new MainEntity();