2014-02-10 1 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; 

Однако, я хотел бы набор для сортировки в регистронезависимом способом, или, по крайней мере, сортировать все в соответствии с нижний регистр атрибута «name». Возможно ли это с 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());