2016-07-15 44 views
0

我們使用休眠和有一個包含成員列表的球隊對象:Hibernate @OrderBy(「firstName ASC」)是不區分大小寫的?

@OrderBy("firstName ASC") 
private List<User> members = new ArrayList<User>(); 

但是,我們想擁有它不區分大小寫和不敏感,這種方式,例如較低的字母將每下方其他大寫字母。 在0123.的章節2.2.5.3.4中。我發現如何使用@OrderBy批註進行訂購,但沒有提示如何對此不區分大小寫。

親切的問候

回答

0

您可以通過LOWERUPPER

@OrderBy("UPPER(firstName) ASC") 
private List<User> members = new ArrayList<User>(); 

低於生成的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) 
+0

我試過,但我得到的PersistenceException: 異常說明:爲了通過值[UPPER(名字),從實體[類[...]團隊]元素[會員]上指定,是無效的。目標實體[class [...] User]上不存在具有該名稱的屬性或字段。似乎它搜索屬性UPPER(firstName)。任何想法如何解決這個問題? – tietze111

+0

我沒有從'javax.persistence'導入'OrderBy',我嘗試了'JPA'和休眠'Criteria'它的工作 – Saravana

+0

沒有爲我工作 –

0

爲了通過除一個以外的東西訂購正常的字段,你必須把它也放在select子句中,所以

SELECT e, UPPER(e.firstName) AS firstNameUpper FROM MyEntity e WHERE ... ORDER BY firstNameUpper ASC 

顯然,您必須在結果處理中允許額外的結果項目。見JPQL BNF