我正在使用休眠。
我有一对多的关系。
@OneToMany(mappedBy = "enrollmentSetupCategory", fetch = FetchType.EAGER, cascade = CascadeType.ALL )
private Set<EnrollmentSetupCategoryLevel> enrollmentSetupCategoryLevels;
我的问题是我在内部使用的集合的实现在哪里?如果我扩展了类似的接口,返回的对象会被排序吗? 或者我必须自己排序?
答案 0 :(得分:4)
Hibernate支持已排序的集合映射,您可以指定比较器为您进行排序。
来自docs
Hibernate支持实现java.util.SortedMap和的集合 java.util.SortedSet中。您必须在映射中指定比较器 文件:
<set name="aliases" table="person_aliases" sort="natural"> <key column="person"/> <element column="name" type="string"/> </set> <map name="holidays" sort="my.custom.HolidayComparator"> <key column="year_id"/> <map-key column="hol_name" type="string"/> <element column="hol_date" type="date"/> </map>
sort属性的允许值是unsorted,natural和 实现java.util.Comparator的类的名称。
排序集合实际上表现得像
java.util.TreeSet
或java.util.TreeMap
。
从Docs编辑注释,检查
3.4.6。集合相关注释
@Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
答案 1 :(得分:1)
您将使用Hibernate自己的Set
- org.hibernate.collection.PersistentSet
http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/collection/PersistentSet.html
这个类没有实现Comparable
inteface,所以你应该自己对它进行排序或者将它转换为set的某种可排序实现(例如TreeSet
)。