You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mb...@apache.org on 2020/02/25 20:16:07 UTC
[ofbiz-framework] branch trunk updated: Fixed: Fluent API Bug in
getFieldList().
This is an automated email from the ASF dual-hosted git repository.
mbrohl pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 8afb711 Fixed: Fluent API Bug in getFieldList().
8afb711 is described below
commit 8afb711ef31751e36cc6155dd6bbaf21cacb6f3e
Author: Michael Brohl <mb...@apache.org>
AuthorDate: Tue Feb 25 21:15:37 2020 +0100
Fixed: Fluent API Bug in getFieldList().
(OFBIZ-10298)
Thanks Benjamin Jugl for reporting and providing the patch.
---
.../org/apache/ofbiz/entity/util/EntityQuery.java | 23 +++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
index 378b6ed..59ca306 100644
--- a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
+++ b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
@@ -22,7 +22,7 @@ import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -63,7 +63,7 @@ public class EntityQuery {
private Integer resultSetType = EntityFindOptions.TYPE_FORWARD_ONLY;
private Integer fetchSize = null;
private Integer maxRows = null;
- private Boolean distinct = null;
+ private boolean distinct = false;
private EntityCondition havingEntityCondition = null;
private boolean filterByDate = false;
private Timestamp filterByDateMoment;
@@ -471,9 +471,7 @@ public class EntityQuery {
if (maxRows != null) {
findOptions.setMaxRows(maxRows);
}
- if (distinct != null) {
- findOptions.setDistinct(distinct);
- }
+ findOptions.setDistinct(distinct);
return findOptions;
}
@@ -520,10 +518,21 @@ public class EntityQuery {
return EntityCondition.makeCondition(conditions);
}
+ /**
+ * Gets a list of values (no matter which type) for a specified entity field name.
+ * <p>
+ * The field of the entity is first selected and the cache usage turned off to ensure no values are missing.
+ * @param <T>
+ * @param fieldName
+ * @return list with field values
+ * @throws GenericEntityException
+ */
public <T> List<T> getFieldList(final String fieldName) throws GenericEntityException {select(fieldName);
+ select(fieldName);
+ cache(false);
try (EntityListIterator genericValueEli = queryIterator()) {
- if (Boolean.TRUE.equals(this.distinct)) {
- Set<T> distinctSet = new HashSet<>();
+ if (this.distinct) {
+ Set<T> distinctSet = new LinkedHashSet<T>();
GenericValue value = null;
while ((value = genericValueEli.next()) != null) {
T fieldValue = UtilGenerics.<T>cast(value.get(fieldName));