一对多里对 set 的排序

一对多里面对 set 的排序,建议采用以下办法:

 

1、首先,将POJO 中的 set 成员的类型改为 TreeSet 类型,因为 TreeSet 是实现了 SortedSet 的可排序集合类。

 

private Set labproductflowinfos = new TreeSet(new FlowInfoComparator());// TreeSet 提供一个自定义的比较器

 

然后修改配置文件,为<set> 添加 sort 属性,属性取值可以为一个自定义的比较器。如下:

   public class FlowInfoComparator implements Comparator {  
    public int compare(Object o1, Object o2) {  
       if(o1 instanceof Labproductflowinfo &&  
         o2 instanceof Labproductflowinfo){  
        Integer s1 = ((Labproductflowinfo)o1).getSequenceNum();  
        Integer s2 = ((Labproductflowinfo)o2).getSequenceNum();  
        return s1.intValue() - s2.intValue();  
       }  
       return 0;  
   }}  
   <set name="labproductflowinfos" inverse="true"  
             cascade="all-delete-orphan" lazy="false" sort="com.zsc.hibernate.FlowInfoComparator">  

2、第三种方式比较简单就是在hbm配置文件里配置采取排序的序列。<set ... order-by="date asc" />第一个参数是选择排序的序列,第二个参数是升序还是降序。

你可能感兴趣的:(Hibernate)