2014-02-10 40 views
2

我正在使用JPA 2.0,Hibernate 4.1.0.Final和MySQL 5.5。我想用@OrderBy註釋排序在我的實體的一個集...是否可以使用JPA @OrderBy批註以不區分大小寫的方式進行排序?

@OneToMany(mappedBy = "classroom", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, orphanRemoval=true) 
@OrderBy(「name」) 
private Set<User> roster; 

不過,我想設置爲不區分大小寫的方式進行排序,或者至少根據排序一切小寫的「名稱」屬性。 JPA有可能嗎?如果這能解決我的問題,我可以升級我的JPA和Hibernate版本。

+0

這依賴於Hibernate的,而不是純粹的JPA,但你可以檢查http://stackoverflow.com/questions/19871765/jpa-hibernate-sorted-collection-orderby-vs-sort – SJuan76

+0

另一種變化可能是在數據庫中定義一個計算列,比如「lower(name)」,爲它定義一個屬性(使其成爲只讀)並按順序排列。然後再次不是JPA-ish。 – SJuan76

+0

關於您發佈的第一個鏈接,他在哪裏進行了不區分大小寫的排序?使我的變量SortedSet不能解決我的問題。 – Dave

回答

2

如果你想堅持使用標準的JPA註釋,而不是使用提供者(Hibernate)特定的註釋,那麼這是不可能的。但是,通過使用具有自己的比較器的TreeSet,您可以實現相同的行爲。

如:

Set<User> roster = new TreeSet<User>(new MyComparator()); 
相關問題