zoukankan      html  css  js  c++  java
  • 【Hibernate】set排序

    使用hibernate进行一对多操作的时候,普遍使用HashSet进行操作。但是HashSet是无序集合,对此可以使用TreeSet进行排序。

    1.将HashSet改为TreeSet

    1 private Set<EbgRequmentItem> items = new HashSet<EbgRequmentItem>();

    --》

     1 private Set<EbgRequmentItem> items = new TreeSet<EbgRequmentItem>(new Comparator<EbgRequmentItem>(){
     2          @Override
     3          public int compare(EbgRequmentItem o1, EbgRequmentItem o2) {
     4               //默认如果是比较结果为0的话,会认为重复,默认去掉,这里可以做下处理
     5               if( o1.getName().compareTo(o2.getName()) == 0){
     6                   //返回-1不会去重
     7                   return -1;
     8               }else{
     9                   //降序
    10                   //return o2.getName().compareTo(o1.getName()); 
    11                   //升序
    12                   return o1.getName().compareTo(o2.getName()); 
    13               }
    14          }
    15  }); 

    2.新增TreeSet排序比较器对象

     1 package ?????.comparator;
     2 
     3 import ?????.EbgRequmentItem;
     4 
     5 import java.util.Comparator;
     6 
     7 /**
     8  * 采购产品需求项排序比较器
     9  * 
    10  * @author Tidy
    11  *
    12  */
    13 public class EbgRequimentItemComparator implements Comparator<EbgRequmentItem> {
    14 
    15     @Override
    16     public int compare(EbgRequmentItem o1, EbgRequmentItem o2) {
    17         return o1.getName().compareTo(o2.getName()); 
    18     }
    19 
    20 }

    3.在hbm.xml文件中添加sort属性

    1 <set name="items" cascade="delete-orphan" inverse="true" lazy="true">
    2     <key column="PRODUCT_REQ_ID"></key>
    3     <one-to-many class="EbgRequmentItem"/>
    4 </set>

    --》

    1 <set name="items" cascade="delete-orphan" inverse="true" lazy="true" sort="??????.comparator.EbgRequimentItemComparator">
    2     <key column="PRODUCT_REQ_ID"></key>
    3     <one-to-many class="EbgRequmentItem"/>
    4 </set>

    4.重启服务进行测试就可以了。

  • 相关阅读:
    Java学习资源整理(超级全面)
    Java中的Iterable与Iterator详解
    git使用笔记1:结合Github远程仓库管理项目
    关于LeetCode上链表题目的一些trick
    关于链表中哨兵结点问题的深入剖析
    关于Java中基类构造器的调用问题
    大整数相乘问题总结以及Java实现
    快速排序实现及其pivot的选取
    阿里云服务器部署Java Web项目全过程
    Git 学习总结
  • 原文地址:https://www.cnblogs.com/zengweiming/p/4134676.html
Copyright © 2011-2022 走看看