From fa9e9be003663feb2d5e5143a08719d470428c4c Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 29 Jul 2022 17:12:51 +1200 Subject: [PATCH] #2753 - Fix for, Bug findSingleAttributeList o2m distinct --- .../java/io/ebeaninternal/server/core/OrmQueryRequest.java | 4 ++-- .../io/ebeaninternal/server/query/CQueryPredicates.java | 7 +++---- .../org/tests/query/other/TestQuerySingleAttribute.java | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java index ebe0ca971..423d6687b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java @@ -458,8 +458,8 @@ public final class OrmQueryRequest extends BeanRequest implements SpiOrmQuery /** * Return the many property that is fetched in the query or null if there is not one. */ - public BeanPropertyAssocMany manyProperty() { - return manyProperty; + public BeanPropertyAssocMany manyPropertyForOrderBy() { + return query.isSingleAttribute() ? null : manyProperty; } /** diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryPredicates.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryPredicates.java index 10ec4d396..783ffe852 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryPredicates.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryPredicates.java @@ -225,7 +225,7 @@ public final class CQueryPredicates { */ private void parsePropertiesToDbColumns(DeployParser deployParser) { // order by is dependent on the manyProperty (if there is one) - String logicalOrderBy = deriveOrderByWithMany(request.manyProperty()); + String logicalOrderBy = deriveOrderByWithMany(request.manyPropertyForOrderBy()); if (logicalOrderBy != null) { dbOrderBy = deployParser.parse(logicalOrderBy); } @@ -234,7 +234,7 @@ public final class CQueryPredicates { dbWhere = deriveWhere(deployParser); dbFilterMany = deriveFilterMany(deployParser); dbHaving = deriveHaving(deployParser); - // all includes including ones for manyWhere clause + // all includes, including ones for manyWhere clause predicateIncludes = deployParser.getIncludes(); } @@ -293,8 +293,7 @@ public final class CQueryPredicates { } /** - * There is a many property so we need to make sure the ordering is - * appropriate. + * There is a many property we need to make sure the ordering is appropriate. */ private String deriveOrderByWithMany(BeanPropertyAssocMany manyProp) { if (manyProp == null) { 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 d34af2ad5..67de4796c 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 @@ -757,8 +757,7 @@ public class TestQuerySingleAttribute extends BaseTestCase { } @Test - public void oneToMany_distinct() { - + void oneToMany_distinct() { ResetBasicData.reset(); Query query = DB.find(Customer.class)