Hibernate中集合类型和结果集排序

来源:互联网 发布:淘宝二手市场 编辑:程序博客网 时间:2024/05/21 03:17
最近发现用hibernate的set映射取得的数据库记录集在JSP页面显示时排序有问题,后来查了一下才发现:
Hibernate中的Collection类型分为有序集和无序集两类。这里所谓的有序和无序,是针对Hibernate数据持久过程中,是否保持数据集合中的记录排列顺序加以区分的。无序集有Set,Bag,Map几种,有序集有List一种。有序集的数据在持久化过程中,会将集合中元素排列的先后顺序同时固化到数据库中,读取时也会返回一个具备同样排列顺序的数据集合。
Hibernate中的Collection类型是用的自己的实现,所以在程序中,不能够把接口强制转化成相应的JDK Collection的实现。
结果集的排序有两种方式:
1. Sort
Collection中的数据排序。
2. order-by
对数据库执行Select SQL时,由order by子句实现的数据排序方式。
以下是按id升序排序的方式
<set name="qcDailyWeekplanDetailSet"? inverse="true" order-by="id asc">
    <key column="mainid"/>
    <one-to-many class="QcDailyWeekplanDetail"/>
</set>

需要注意的是,order-by特性在实现中借助了JDK 1.4中的新增集合类LinkedHashSet以及LinkedHashMap。因此,order-by特性只支持在1.4版本以上的JDK中运行。
原创粉丝点击