CriteriaQuery <!-?->忽略空值

时间:2018-09-24 11:59:56

标签: java spring-mvc spring-data-jpa jpql

当我尝试使用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"))));
                    }
                }

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这并非特定于JPA,Spring或它们的组合。

这是数据库或SQL的基本功能。 必须定义某种顺序实际上意味着什么。

AFAIK的详细信息如何配置此特定于数据库,并且您未指定要使用的数据库,因此这里提供了一些有关如何在Oracle中对其进行控制的信息。他们称之为linguistic sorting

要对其进行控制,您必须找到符合您需求的语言环境或build a new one。 关键是“不可忽略的字符”,您可能已经猜到它在排序时会被忽略。它们包括“-”。