2016-07-15 7 views
0

verwenden wir überwintern und ein Team zum Gegenstand haben, die eine Liste der Mitglieder enthält:Hibernate @OrderBy ("firstName ASC") case insensitive?

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

Aber wir möchten, dass es Groß- und Kleinschreibung und unempfindlich gegenüber haben, auf diese Weise zum Beispiel eine niedrigere Buchstabe a unter jeder sein anderer Großbuchstabe. In der hibernate documentation in Kapitel 2.2.5.3.4. Ich habe herausgefunden, wie man mit der @OrderBy-Annotation bestellt, aber es gibt keinen Hinweis darauf, wie man diese Groß-/Kleinschreibung nicht beachten kann.

Mit freundlichen Grüßen

Antwort

0

Sie Groß- und Kleinschreibung Bestellung durch Kommentierung der Bestellung Spalte angeben können, mit LOWER oder UPPER

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

Below SQL erzeugt durch Hibernate

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

Ich versuchte dies aber ich PersistenceException erhalten: Exception Beschreibung: Die Reihenfolge von Wert [UPPER (firstname)], auf dem Elemente angegeben [Mitglieder] aus Entität [Klasse [...] Team] ist ungültig. Für die Ziel-Entität [Klasse [...] Benutzer] existiert keine Eigenschaft oder ein Feld mit diesem Namen. Scheint so, als ob nach dem Attribut UPPER (firstName) gesucht wird. Irgendeine Idee, wie man das repariert? – tietze111

+0

Ich habe 'OrderBy' aus' javax.persistence' importiert, habe es mit 'JPA' versucht und habe' Kriterien' durchgezogen funktioniert es – Saravana

+0

Hat bei mir nicht funktioniert –

0

von anderen etwas zu bestellen, als ein Normales Feld, du musst es auch in den Select-Klausel setzen, also

Offensichtlich müssen Sie dann das zusätzliche Ergebniselement in Ihrer Ergebnisverarbeitung berücksichtigen. Siehe JPQL BNF