【发布时间】:2015-06-15 06:23:49
【问题描述】:
我需要根据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;
}
}
【问题讨论】:
-
您要根据哪些基础进行排序?看来您正在尝试对一个类而不是 Integer 或 String 进行排序??
-
我不使用 Hibernate,但将其标记为已弃用的 javadocs 有一条评论,“根据需要使用 SortComparator 或 SortNatural。”听起来您需要 SortComparator。
-
我需要根据其排序字段的值对 Offer 集合的 Offer 对象进行排序。