本文讨论的问题:Hibernate一对多关系中,在一的一方关联的集合对象排序问题。
大家可能会想到用TreeSet集合来对集合内元素进行排序,private Set<Comment> comments = new TreeSet<Comment>();但是不管你Comment是否实现了Comparable接口还是传入Comparator比较器,最终发现,依然没有达到排序效果,细心的你可能会发现,comments对象并不是TreeSet类的实例而是PersistentSet的实例,你有没有发现?Hibernate根本就不听你的!
怎么办呢?很多人想到,我先查出来,之后想怎么排就怎么排!这样是不是做了很多无意义的工作了?Hibernate发展至今这么成熟,难道会想不到集合需要排序吗?那么,就一定有方法和配置项可以设置的,查阅资料就可以知道只需要在为这个关联对象加上@Sort注解就能解决问题,例如:@Sort(type = SortType.COMPARATOR, comparator = CommentComparator.class),注解中指定排序类型和自定义的比较器,在比较器中写你的比较规则即可。查询出来的对象,按照你的比较规则自动帮你排序了,这样是不是很方便?