Мы работаем над проектом весенней загрузки, в котором сортировка по номеру столбца может применяться в порядке возрастания и убывания.
Мы используем построитель критериев для генерации запроса. Вот код заказа по запросу для сортировки:
List<Order> orderBy = new ArrayList<>();
queryContext.getSorts().forEach(sort -> {
if (sort.getDirection().equals(SortDirection.asc)) {
orderBy.add(builder.asc(getReference(root, sort.getColumnName())));
} else {
orderBy.add(builder.desc(getReference(root, sort.getColumnName())));
}
});
Это работало нормально со строкой. Но это не работает для одного столбца строкового типа, но будет содержать значения с плавающей запятой, числа с десятичными или без них.
Приведенный ниже код запроса отлично работает для столбца строкового типа, который будет содержать значения с плавающей запятой, числа с десятичным знаком или без него.
orderByClauses.append("regexp_substr(regexp_replace(attribNum, '^\\.', '0.'), '^\\D*') ");
orderByClauses.append(s.getDirection().toString());
orderByClauses.append(" nulls first,");
orderByClauses.append("to_number(regexp_substr(regexp_replace(attribNum, '^\\.', '0.'), '\\d+\\.?\\d*')) ");
Как добавить эти выражения в построитель критериев?