2015-06-15 28 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

在其基部你想排序?看來你正在嘗試對一個類進行排序,而不是整數或字符串? –

+0

我沒有使用Hibernate,但注意到它已過時的javadoc有一條評論,「Use [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

我需要根據其排序字段的值對Offer對象進行排序。 –

回答

7

您需要指定列名到b e將在ORDER BY子句

嘗試將此註釋添加到SortedSet的

@javax.persistence.OrderBy("sort") 
相關問題