diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java index a6c339c95a..01a46c5b1c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java @@ -68,6 +68,7 @@ import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Arrays; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -303,7 +304,13 @@ abstract class AbstractField extends AbstractTypedNamed implements Field sortAsc(Collection sortList) { - return Tools.isEmpty(sortList) ? sortConstant() : DSL.field(this, fieldsArray(sortList.toArray(), getDataType())).asc(); + Map map = new LinkedHashMap<>(); + + int i = 0; + for (T value : sortList) + map.put(value, i++); + + return sort(map); } @Override @@ -314,7 +321,13 @@ abstract class AbstractField extends AbstractTypedNamed implements Field sortDesc(Collection sortList) { - return Tools.isEmpty(sortList) ? sortConstant() : DSL.field(this, fieldsArray(sortList.toArray(), getDataType())).desc(); + Map map = new LinkedHashMap<>(); + + int i = 0; + for (T value : sortList) + map.put(value, i--); + + return sort(map); } @Override