我们使用hibernate并拥有一个包含成员列表的团队对象:
@OrderBy("firstName ASC")
private List<User> members = new ArrayList<User>();
但是我们希望它不区分大小写并且不敏感,这种方式例如较低的字母a将低于其他大写字母。 在第2.2.5.3.4章的hibernate documentation中。我找到了如何使用@OrderBy注释进行排序,但没有提示如何对这种情况不敏感。
亲切的问候
答案 0 :(得分:0)
您可以通过使用LOWER
或UPPER
@OrderBy("UPPER(firstName) ASC")
private List<User> members = new ArrayList<User>();
下面是hibernate生成的SQL
SELECT user0_.id AS id1_0_0_,
user0_.firstname AS firstname2_0_1_,
user0_.lastname AS lastname3_0_1_
FROM user user0_
WHERE user0_.user_id=?
ORDER BY upper(user0_.firstname)
答案 1 :(得分:0)
要通过普通字段以外的其他内容进行排序,您必须将它也放在select子句中,所以
SELECT e, UPPER(e.firstName) AS firstNameUpper FROM MyEntity e WHERE ... ORDER BY firstNameUpper ASC
显然,您必须在结果处理中允许额外的结果项。请参阅JPQL BNF