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 <[email protected]>
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>