当我尝试使用CriteriaQuery对数据进行排序时,它将忽略所有空值和特殊字符,例如'-'。 那是我的代码:
if ( "radical".equals((String) params.get("sort"))) {
if ("ASC".equals(params.get("order"))) {
query.orderBy(cb.asc(cb.upper(root.get(CONTRAT).get(RELATION_COMMERCIALE).get("identifiantRC"))));
}else if ("DESC".equals(params.get("order"))) {
query.orderBy(cb.desc(cb.upper(root.get(CONTRAT).get(RELATION_COMMERCIALE).get("identifiantRC"))));
}
}
有什么建议吗?
答案 0 :(得分:0)
这并非特定于JPA,Spring或它们的组合。
这是数据库或SQL的基本功能。 必须定义某种顺序实际上意味着什么。
AFAIK的详细信息如何配置此特定于数据库,并且您未指定要使用的数据库,因此这里提供了一些有关如何在Oracle中对其进行控制的信息。他们称之为linguistic sorting。
要对其进行控制,您必须找到符合您需求的语言环境或build a new one。 关键是“不可忽略的字符”,您可能已经猜到它在排序时会被忽略。它们包括“-”。