This is an automated email from the ASF dual-hosted git repository. ntimofeev 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 1cfd2db CAY-2657 SelectQueryDescriptor should use ObjectSelect 1cfd2db is described below commit 1cfd2dbbed4280ba75be29bab02fd6281f3c477f Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Mon Sep 21 17:07:54 2020 +0300 CAY-2657 SelectQueryDescriptor should use ObjectSelect --- RELEASE-NOTES.txt | 1 + .../main/java/org/apache/cayenne/map/SelectQueryDescriptor.java | 4 +++- .../src/main/java/org/apache/cayenne/query/ColumnSelect.java | 9 --------- .../src/main/java/org/apache/cayenne/query/FluentSelect.java | 3 ++- .../src/main/java/org/apache/cayenne/query/ObjectSelect.java | 9 +++++++++ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 0872506..04ba3b3 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -15,6 +15,7 @@ Changes/New Features: CAY-2338 Support comments in cgen and default templates CAY-2656 Modeler: option to download required jars directly from maven central +CAY-2657 SelectQueryDescriptor should use ObjectSelect CAY-2659 Use new SQLBuilder utility to generate SQL for batch queries CAY-2662 Use custom interface for SQL tree processor instead of a Function<Node, Node> CAY-2663 Support for custom SQL operators diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/SelectQueryDescriptor.java b/cayenne-server/src/main/java/org/apache/cayenne/map/SelectQueryDescriptor.java index 5ca45ef..8722cd0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/map/SelectQueryDescriptor.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/map/SelectQueryDescriptor.java @@ -193,8 +193,10 @@ public class SelectQueryDescriptor extends QueryDescriptor { prefetchesMap.forEach(query::prefetch); } - // TODO: apply DISTINCT property query.initWithProperties(this.getProperties()); + if(this.isDistinct()) { + query.distinct(); + } return query; } diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java index 4a0e040..bc34d0d 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java @@ -70,7 +70,6 @@ public class ColumnSelect<T> extends FluentSelect<T> { private Collection<Property<?>> columns; // package private for tests boolean singleColumn = true; - boolean distinct; ColumnSelectMetadata metaData = new ColumnSelectMetadata(); @@ -604,14 +603,6 @@ public class ColumnSelect<T> extends FluentSelect<T> { return columns; } - /** - * @since 4.2 - */ - @Override - public boolean isDistinct() { - return distinct; - } - @Override public T selectFirst(ObjectContext context) { return context.selectFirst(limit(1)); diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java index f886732..58201c0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/FluentSelect.java @@ -51,6 +51,7 @@ public abstract class FluentSelect<T> extends AbstractQuery implements Select<T> boolean havingExpressionIsActive = false; protected Collection<Ordering> orderings; + boolean distinct; protected FluentSelect() { } @@ -213,7 +214,7 @@ public abstract class FluentSelect<T> extends AbstractQuery implements Select<T> * @since 4.2 */ public boolean isDistinct() { - return false; + return distinct; } /** diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java index 6c728a1..4a54d78 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java @@ -655,6 +655,15 @@ public class ObjectSelect<T> extends FluentSelect<T> implements ParameterizedQue } /** + * @since 4.2 + * @return this + */ + public ObjectSelect<T> distinct() { + this.distinct = true; + return this; + } + + /** * <p>Quick way to select count of records</p> * <p>Usage: * <pre>