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.重启服务进行测试就可以了。

  • 相关阅读:
    基于redis的分布式锁实现方案
    nginx 配置文件详解
    Linux 下安装Nginx
    Nginx简介
    Spring Boot 整合 Spring Security 示例实现前后分离权限注解 + JWT 登录认证
    idea2020.1版本下载安装与激活
    Cloud Alibaba --Nacos
    spring Cloud Alibaba 简介
    Eclipse中SVN更改连接用户
    Win7(64bit)搭建SVN
  • 原文地址:https://www.cnblogs.com/zengweiming/p/4134676.html
Copyright © 2011-2022 走看看