一对多里面对
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" />第一个参数是选择排序的序列,第二个参数是升序还是降序。
分享到:
相关推荐
在Java的持久化框架Hibernate中,一对多关系是常见的实体关联类型,表示一个实体可以与多个其他实体相关联。在处理这种关系时,我们通常会使用`Set`或`List`作为关联集合的容器。本篇文章将深入探讨`Hibernate`中一...
在一个实体类中,如果有一个`Set`类型的属性,代表一对多关系,可以将这个`Set`的实现类型改为`TreeSet`。`TreeSet`是Java集合框架中的一个有序集合,它实现了`SortedSet`接口,可以自动保持元素的排序顺序。为了...
本文将对STL中的set和map进行详细的讲解,并提供修改排序准则的思路和实现代码。 一、STL中的set和map排序 在STL中,set和map都是按照特定的排序准则进行排序的。对于set来说,默认的排序准则是按照元素的值大小...
在代码中,可以通过连续调用`SetSort`方法添加更多的排序级别。 4. **自定义排序**:PB还允许创建自定义的排序函数,以满足特殊排序需求。这种排序方式需要编写用户自定义函数(UDF),在函数中实现排序逻辑,然后...
std::set是C++标准库中一个关联容器,实现内部元素的排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。 std::set的主要特点是:自动排序、关联...
本文将深入探讨如何使用Stream API对日期进行排序。日期排序在数据分析、日志处理、报表生成等场景中非常常见。下面我们将详细讨论相关知识点。 首先,我们需要了解Java中的日期时间API。在Java 8之前,我们通常...
在Hibernate的XML映射文件中,我们可以使用`<set>`、`<list>`、`<map>`或`<bag>`元素来表示一对多关系。以用户和订单为例,`User`类对应一个`Order`类的集合: ```xml <!-- User.hbm.xml --> <set name="orders" ...
1. **内置排序**:PB数据窗口提供了内置的排序功能,允许用户根据一个或多个字段进行升序或降序排序。在设计数据窗口时,可以通过设置字段属性来指定排序方式,或者在运行时通过DataWindow对象的Sort方法动态设定...
在实际项目中,我们常常需要对这些列表进行排序,而不仅仅基于一个字段,而是可能根据多个字段的顺序来决定元素的最终排列。这就涉及到了多字段排序。 多字段排序是指按照一个以上的属性或字段对数据进行排序。例如...
综上所述,虽然`map`和`set`在很多方面有共同之处,如基于红黑树的实现和有序性等,但它们在数据类型、插入规则、访问方式等方面存在明显差异。理解这些不同有助于开发者根据实际需求选择最合适的容器类型,提高程序...
它通过将待排序的数组按某个增量分组,然后对每组进行直接插入排序,随着增量逐渐减少,每组包含的关键词越来越多,直到增量为1,整个文件恰被分成一组,算法便终止。 4. 冒泡排序(Bubble Sort): 冒泡排序是最...
在C++标准模板库(STL)中,`set`容器是一种非常重要的关联容器,主要用于存储唯一元素,并且这些元素会根据其键值自动排序。`set`内部通常采用红黑树(一种自平衡的二叉查找树)来实现,这使得它在执行插入、删除和...
该问题要求对汽车牌照进行多关键字排序及快速查找。为了解决这个问题,我们需要设计一个合适的数据结构和算法来存储和处理汽车牌照信息。 首先,我们定义了一个结构类型,包括车主、车牌号、车色、车型等信息,并...
在C#编程中,对数据库记录进行排序查询是常见的数据操作任务,这涉及到数据库的查询语句、数据访问层的设计以及UI展示等多个方面。本文将深入探讨如何在C#环境中,利用ADO.NET或者ORM框架(如Entity Framework)来...
`Map`接口表示键值对的集合,每个键都是唯一的,且每个键都有一个对应的值。 ##### 概述 常见的`Map`实现包括`HashMap`、`TreeMap`等。 - **HashMap**:基于哈希表实现,提供了快速的键值对检索。 - **TreeMap**...
- **多关键字排序**:如果需要按多个关键字排序,可以在 `Sort` 方法中添加更多参数。 - **自定义排序规则**:可以通过设置 `SortSpecialOrder` 参数来自定义排序规则,例如按颜色排序等。 - **错误处理**:在实际...
5. **映射(Map)接口的基本概念**:键值对的存储,键必须是唯一的,而每个键可以对应一个或多个值。 6. **HashMap的工作方式**:使用哈希表存储键值对,通过键的哈希值快速定位,支持高效的查找、插入和删除操作。...
在VB6(Visual Basic 6)中,ListView控件是一个常用...通过以上步骤,我们可以创建一个功能完备的ListView控件,能够根据用户的需求对数字数据进行升序或降序排序。这不仅提高了用户体验,也使得数据管理更加方便。
1. **复合排序**:先按第一列排序,然后对每一列的相等组再按下一列排序。这可以通过嵌套`IComparer`s实现,或者在单个`IComparer`中同时处理多个条件。 2. **优先级排序**:指定每个列的优先级,高优先级列的排序...
3. **关联映射**:集合映射通常涉及到两个实体之间的关联,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)关系。 4. **集合属性映射**:在实体类中,集合属性需要使用...