`

Hibernate: 一对多里对 set 的排序

 
阅读更多
一:注解 http://www.iteye.com/topic/142677
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)         
@OrderBy(name = "tel_id DESC")   
public Set<Tel> getTels() {         
    return tels;         
} 


谢谢各位,我已经解决了,
我翻看了文档,orderby的方式对list是有效的
set和map用mapkey
我把set改为list了,用了orderby就能排序了
谢谢你们了。


二:非注解: http://uule.iteye.com/blog/1046723
一对多里面对 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 一对多 set 与 list 分别用法

    在Java的持久化框架Hibernate中,一对多关系是常见的实体关联类型,表示一个实体可以与多个其他实体相关联。在处理这种关系时,我们通常会使用`Set`或`List`作为关联集合的容器。本篇文章将深入探讨`Hibernate`中一...

    Hibernate(一对多表操作)

    在Hibernate的XML映射文件中,我们可以使用`&lt;set&gt;`、`&lt;list&gt;`、`&lt;map&gt;`或`&lt;bag&gt;`元素来表示一对多关系。以用户和订单为例,`User`类对应一个`Order`类的集合: ```xml &lt;!-- User.hbm.xml --&gt; &lt;set name="orders" ...

    Hibernate学习之 : 一对多关联映射

    本文主要探讨的是Hibernate中的一对多关联映射,这是一种常见的关系数据库模型,用于表示实体间一对多的关系。 一对多关联映射在Hibernate中意味着一个实体(比如一个部门)可以与多个其他实体(如部门下的员工)相...

    解决Hibernate中MySQL的中文排序

    例如,如果我们有一个名为`Article`的实体类,其中包含一个`title`字段,我们可以使用`@org.hibernate.annotations.OrderBy`注解来指定排序规则: ```java @Entity public class Article { @Id private Long id; ...

    hibernate set 集合映射

    3. **关联映射**:集合映射通常涉及到两个实体之间的关联,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)关系。 4. **集合属性映射**:在实体类中,集合属性需要使用...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    Hibernate之一对多关联

    本篇文章主要探讨的是Hibernate中的一对多关联映射,这是一种常见的对象关系映射(ORM)配置,用于表示一个实体与多个其他实体之间的关系。 在关系型数据库中,一对多关联是指一个表(父表)中的记录可以对应另一个...

    Hibernate一对多关联

    标题 "Hibernate一对多关联" 涉及到的是Java持久化框架Hibernate中的一个重要关系映射概念,这在开发企业级应用时非常常见。在数据库设计中,一对多关系表示一个表(父表)中的记录可以与另一个表(子表)中的多个...

    hibernate 一对多关联

    **标题:“Hibernate 一对多关联”** 在Java的持久化框架Hibernate中,一对多关联是一种常见的关系映射,它模拟了数据库中的外键关联。这种关联类型表示一个实体(如用户)可以拥有多个关联的实体(如订单)。下面...

    hibernate criteria 分组 排序 关联

    - **标题**:“hibernate criteria 分组 排序 关联”这一标题明确了本文将围绕Hibernate Criteria API进行分组、排序以及关联查询的具体应用进行讨论。 - **描述**:描述部分重复了标题的内容,进一步强调了本文的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    hibernate自身关联一对多实例(树形结构)

    本文将深入探讨“Hibernate自身关联一对多实例(树形结构)”这一主题,这在构建具有层次结构的数据模型时尤其常见,例如组织结构、地区树或者商品分类等。 首先,我们需要理解Hibernate的核心概念。Hibernate允许...

    hibernate 3.6 中文 chm

    10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...

    孙卫琴精通hibernate part2

    - Hibernate支持多种关系映射,本章将深入讲解一对一、一对多和多对一的关系配置,包括集合类型的选择(List, Set, Map等)和级联操作的设置。 4. **Chapter 9:多对多关系映射** - 多对多关系在数据库设计中常见...

    day36 06-Hibernate抓取策略:set集合上的抓取策略

    对于一对多的关系,可以使用`@OneToMany(fetch = FetchType.EAGER)`或`@ManyToOne(fetch = FetchType.EAGER)`来指定。然而,过度使用急加载可能会导致性能下降,因为它会增加初始查询的复杂性和数据量。 2. Batch ...

Global site tag (gtag.js) - Google Analytics