为什么 JPA "order by ascending" returns 首先是大写条目?

Why does JPA "order by ascending" returns upper case entries first?

我有一个条件查询,代码如下:

CriteriaQuery<MyClass> criteria = cb.createQuery(MyClass.class);
Root<MyClass> root = criteria.from(MyClass.class);
criteria = criteria
        .where(cb.like(root.get(MyClass_.name), name + "%"))
        .orderBy(cb.asc(root.get(MyClass_.name)))
        .select(root);

为什么我的示例结果是这样排序的:

abcdE
abcde

而不是这样:

abcde
abcdE

我该如何解决?

我希望首先返回完全小​​写的结果,但事实并非如此。

因为大写字母的字符代码在小写字母之前。

A-Z 的 Unicode 字符点是从 65 到 90,而 a-z 是从 97 到 122。所以,排序是从数据库中得到的。

解决这个(因为这不是问题,而是您必须满足的不同要求)简单地不要使用 JPA 对数据进行排序,而是使用 [=10 手动排序=] 并提供自定义 Comparator<MyClass>.