2015-06-15 2 views
3

Мне нужно получить отсортированный список объектов на основе их sort field; Их тип коллекции - SortedSet, но код вызывает следующее исключение. Я также попытался добавить аннотацию @Sort, как описано в разделе отсортированной коллекции hibernate documentation, но, похоже, это устарело!Как получить отсортированный набор объектов на основе определенного поля?

Исключение

Caused by: org.hibernate.AnnotationException: A sorted collection must define and ordering or sorting 

Код

SortedSet<Offer> offers = new TreeSet<Offer>(); 

Классы

public class Person { 
@Id 
long id; 
@OneToMany 
//@OrderBy("sort ASC") <<< If I use this just one offer will be in the collection 
SortedSet<Offer> offers = new TreeSet<Offer>(); 
... 
} 

public class Offer implements Comparable<Offer>{ 

@Id 
long id; 
String name; 
short sort; 
@Override 
public int compareTo(Offer o) { 
    return sort - o.sort; 
} 
} 
+0

На каких базах вы пытаетесь разобраться? Кажется, вы пытаетесь отсортировать класс не Integer или String? –

+0

Я не использую Hibernate, но javadocs, которые отмечают его как устаревшие, имеют комментарий: «Используйте [SortComparator] (https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/annotations/ SortComparator.html) или [SortNatural] (https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/annotations/SortNatural.html) вместо этого в зависимости от необходимости. " Похоже, ваша потребность в SortComparator. – yshavit

+0

Мне нужно сортировать Предложить объекты коллекций предложений на основе значений их полей сортировки. –

ответ

7

Вы должны указать имя столбца б е положить в ORDER BY пункта

пытается добавить аннотацию к SortedSet

@javax.persistence.OrderBy("sort") 
Смежные вопросы