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)); |
Free forum by Nabble | Edit this page |