我有一个标准查询,其中包含以下代码:
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
我该如何解决?
我希望首先返回完全小写的结果,但事实并非如此。
答案 0 :(得分:1)
因为大写字母的char代码在小写字母之前。
答案 1 :(得分:1)
A-Z的Unicode字符点从65到90,而对于a-z,从97到122.因此,排序是从数据库开始的。
要解决这个(因为这不是问题,但是你必须满足不同的要求),不要使用JPA对数据进行排序,而是使用Collections#sort
手动排序并提供自定义Comparator<MyClass>
。