`
zhangfeilo
  • 浏览: 391733 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Hibernate对集合排序

阅读更多

Hibernate对集合中的元素支持两种排序方式:

Ø 在数据库中排序:简称为数据库排序,当Hibernate通过select语句到数据库中检索集合对象时,利用order by子句进行排序。

Ø 在内存中排序:简称为内存排序,当Hibernate把数据库中的集合数据加载到内存中的Java集合中后,利用Java集合的排序功能进行排序,可以选择自然排序或者客户化排序两种方式。

在映射文件中,Hibernate用sort属性来设置内存排序,用order-by属性来设置数据库排序,表14-2显示了<set>、<idbag>、<list>和<map>元素的排序属性。

表14-2 <set>、<idbag>、<list>和<map>元素的排序属性

排 序 属 性

<set>

<idbag>

<list>

<map>

sort属性(内存排序)

支持

不支持

不支持

支持

order-by属性(数据库排序)

支持

支持

不支持

支持

从表14-2看出,<set>和<map>元素支持内存排序和数据库排序,<list>元素不支持任何排序方式,而<idbag>仅支持数据库排序。

14.5.1 在数据库中对集合排序

<set>、<idbag>和<map>元素都具有order-by属性,如果设置了该属性,当Hibernate通过select语句到数据库中检索集合对象时,利用order by子句进行排序。

下面对本章14.1节的Customer.hbm.xml文件中的<set>元素增加一个order-by属性:

<set   name="images"   table="IMAGES"    lazy="true" order-by="FILENAME asc">

        <key column="CUSTOMER_ID" />

        <element column="FILENAME" type="string" not-null="true"/>

</set>  

以上代码表明对images集合中的元素进行升序排列,当Hibernate加载Customer对象的images集合时,执行的select语句为:

select CUSTOMER_ID,FILENAME from IMAGES

where CUSTOMER_ID=1 order by FILENAME;

在DOS命令行下进入chapter14根目录,然后输入命令:

ant -file build1.xml run

就会运行BusinessService类。BusinessService的main()方法调用test()方法,它的输出结果如下:

org.hibernate.collection.PersistentSet

Tom image1.jpg

Tom image2.jpg

Tom image4.jpg

Tom image5.jpg

在order-by属性中还可以加入SQL函数,例如:

<set   name="images"   table="IMAGES"    lazy="true"

order-by="lower(FILENAME) desc">

 

<key column="CUSTOMER_ID" />

         <element column="FILENAME" type="string" not-null="true"/>

</set>  

当Hibernate加载Customer对象的images集合时,执行的select语句为:

select CUSTOMER_ID,FILENAME from IMAGES

where CUSTOMER_ID=1 order by lower(FILENAME) desc;

在<map>元素中也可以加入order-by属性,以下代码表明对Map类型的images集合中的键对象进行排序:

<map   name="images"   table="IMAGES"   lazy="true" order-by="IMAGE_NAME">

        <key column="CUSTOMER_ID" />

        <map-key column="IMAGE_NAME" type="string"/>

        <element column="FILENAME" type="string" not-null="true"/>

</map>  

以下代码表明对Map类型的images集合中的值对象进行排序:

<map   name="images"   table="IMAGES"   lazy="true" order-by="FILENAME">

        <key column="CUSTOMER_ID" />

        <map-key column="IMAGE_NAME" type="string"/>

        <element column="FILENAME" type="string" not-null="true"/>

</map>  

在<idbag>元素中也可以加入order-by属性,以下代码表明按照IMAGES表中的ID代理主键排序:

<idbag   name="images"   table="IMAGES"    lazy="true" order-by="ID">

        <collection-id type="long" column="ID">

           <generator class="increment"/>

        </collection-id>

        <key column="CUSTOMER_ID" />

        <element column="FILENAME" type="string" not-null="true"/>

</idbag>  

http://book.csdn.net/bookfiles/1264/100126437749.shtml

 

分享到:
评论

相关推荐

    Hibernate+中文文档

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...

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

     14.5.1 在数据库中对集合排序  14.5.2 在内存中对集合排序  14.6 映射组件类型集合  14.7 小结  14.8 思考题 第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射 ...

    hibernate3.2中文文档(chm格式)

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...

    HibernateAPI中文版.chm

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...

    hibernate 教程

    集合排序(Sorted Collections) 6.7. 使用&lt;idbag&gt;&lt;br&gt;6.8. 双向关联(Bidirectional Associations) 6.9. 三重关联(Ternary Associations) 6.10. 异类关联(Heterogeneous Associations) 6.11. 集合...

    Hibernate中文详细学习文档

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...

    Hibernate 中文 html 帮助文档

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted ...

    Hibernate实战(第2版 中文高清版)

     6.3.2 排序集合和有序集合   6.3.3 映射嵌入式对象的集合   6.4 映射父/子关系   6.4.1 多样性   6.4.2 最简单的可能关联   6.4.3 使关联双向   6.4.4 级联对象状态   6.5 小结   第7章 高级实体...

    最全Hibernate 参考文档

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted ...

    hibernate 体系结构与配置 参考文档(html)

    值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted ...

    Hibernate教程

    7.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合...

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

     14.5.1 在数据库中对集合排序  14.5.2 在内存中对集合排序  14.6 映射组件类型集合  14.7 小结  14.8 思考题 第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射 ...

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

     14.5.1 在数据库中对集合排序  14.5.2 在内存中对集合排序  14.6 映射组件类型集合  14.7 小结  14.8 思考题 第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射 ...

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

     14.5.1 在数据库中对集合排序  14.5.2 在内存中对集合排序  14.6 映射组件类型集合  14.7 小结  14.8 思考题 第15章 映射实体关联关系  15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射 ...

    hibernate

    集合排序(Sorted Collections) 6.7. 使用&lt;idbag&gt;&lt;br&gt;6.8. 双向关联(Bidirectional Associations) 6.9. 三重关联(Ternary Associations) 6.10. 异类关联(Heterogeneous Associations) 6.11. 集合...

    hibernate3.04中文文档.chm

    7.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合...

    -hibernate-hb-05-map-collections-sortedmap:Hibernate地图集合-sortedmap

    HIBERNATE-映射排序映射 该存储库包含用于映射已排序地图的Hibernate代码示例 我们使用@OrderBy,它指定检索集合时元素的顺序。 为了简化开发和测试,我们将使用自动配置 &lt; property xss=removed&gt;update 数据库表...

    Hibernate3+中文参考文档

    6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted ...

Global site tag (gtag.js) - Google Analytics