【Hibernate】set排序

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

1.将HashSet改为TreeSet

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

--》

private Set<EbgRequmentItem> items = new TreeSet<EbgRequmentItem>();

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<Object> {
14
15     @Override
16     public int compare(Object o1, Object o2) {
17         EbgRequmentItem eqi1=(EbgRequmentItem)o1;
18         EbgRequmentItem eqi2=(EbgRequmentItem)o2;
19         return eqi1.getName().compareTo(eqi2.getName());
20     }
21
22 }

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

时间: 2024-09-20 21:46:30

【Hibernate】set排序的相关文章

Hibernate 查询排序与联合主键映射

1.查询排序 (1)数据库排序(推荐) <map order-by="name ase" > <!--name的升序,降序desc--> session.createQuery(" ").uniqueResult() //返回唯一的对象,前台对象只有一个 <set order-by="name asc"> (2)内存排序 <set sort="natural" > sort属性值

hibernate查询排序

hibernate提供了两种排序方式:1:数据库排序,也就是说通过SQL语句在数据库内部就进行完了排序.2.内存排序,也就是说在数据库中把数据加载到内存中后在进行排序.推荐使用第一种排序方式,因为在数据库中排序的性能要远远高于在内存中排序的性能. 一:数据库排序 使用集合标签中的order-by属性,格式主要是为: order-by="字段名 排序方式”:例如:order-by="name ASC” name是指数据库字段 ASC是升序(默认值,可以省略).DESC是降序.在hiber

hibernate set集合配置排序

在使用hibernate 的时候如果配置的一对多关系为set集合,那么如果直接取用的时候集合中的元素就会出现乱序 如果希望取出来的元素可以按照指定的字段排序我们可以在 set集合的节点中进行配置 根据subTypes这个集合所映射的表中的id字段的顺序存储. <set name="subTypes" inverse="true" order-by="id"> <key> <column name="pare

[原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

hibernate 用hql做中文排序

用Hibernate+MySQL的童鞋是不是很苦恼为什么MySQL不支持中文排序呢?没办法,只有等utf8_unicode_cn 出来了.如果用hibernate即想实现跨库,又想不改代码如何实现呢,下边告诉你答案. 方法一.描述:给Hibernate的MySQL方言包注册一个排序方法,该方法中实现了MySQL中文排序.贴代码: public class MySQLExtendDialect extends MySQLDialect { public MySQLExtendDialect(){

【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差

在Hibernate中的HQL语句其实能够基本能够实现SQL语句所做的事情,正如jQuery至于javascript一样.虽然HQL语句是对类的查询,但是HQL在实行聚类查询.分组查询.排序与时间之差等查询,也无须把查询结果查询出来,再通过对List的处理才得到结果. 比如有一张如下的Testtable表: 要像<[Mysql]求出离最近相差X天的项,sql语句关于日期的比对>(点击打开链接)一样,查询date字段离现在具有30年的项有多少,SQL语句则这样写: select count(*)

hibernate注解实现set集合排序

package com.dc.product.entity.res; // Generated 2014-11-28 16:53:22 by Hibernate Tools 3.4.0.CR1 import java.math.BigDecimal; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persist

Hibernate学习随笔

一.Hibernate的基本使用 首先需要配置相应的配置文件 Hibernate基本使用步骤 1.创建org.hibernate.cfg.Configuration对象 2.调用configure方法将配置文件放入其中 3.调用buildSessionFactory()方法创建SessionFactory对象(该方法需要加载配置文件.创建表等等,及其耗费资源,所以一般一个项目只需要一个就足够,可以利用工具类和静态代码块使该项目中共用一个SessionFactory对象) 4.利用SessionF

Hibernate 入门

 提问: (这一些题是答辩或是面试可能遇到的或是我经常搞混的题) 1  JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成. 2  JDBC遇到的一些麻烦是什么? 1 从效率上来说,每次操作都要重新连接数据库,对数据库的压力比较大. 2 从代码上考虑,每次执行的语句都是经过编译及连接的控制,还有考虑事务提交回滚什么的,程序员的重