我们正在使用其中一列的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;
我的问题是我们如何才能将此查询以orderby或criteriabuilder的形式纳入上述jpa代码中。