Мы реализуем сортировку данных с данными jpa в одном из столбцов, и наш код -
@Override
public Predicate toPredicate(Root<UpgradeFile> uf, CriteriaQuery<?> query, CriteriaBuilder cb) {
if (sortAttr != null && sortAttr.equals("version")) {
if (sortOrder == 1) { //asc order
orderList.add(cb.asc(uf.get(sortAttr)));
} else if (sortOrder == 2) { //desc order
orderList.add(cb.desc(uf.get(sortAttr)));
}
query.orderBy(orderList);
}
...
наш столбец версии находится в строке и имеет значения типа "11.0.2.73", "11.0.2.312".
Поскольку столбец находится в строке, сортировка не работает должным образом, поэтому мы должны привести ее к числовому типу после удаления "." например -
order by ( CAST(
replace(version, '.', '')
AS numeric) ) asc;
Мой вопрос заключается в том, как мы можем включить этот запрос в приведенный выше код jpa либо в порядке, либо в построителе критериев.