[ofbiz-framework] branch trunk updated: Fixed: Fluent API Bug in getFieldList().

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] branch trunk updated: Fixed: Fluent API Bug in getFieldList().

mbrohl
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 <[hidden email]>
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));