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

    技术2022-05-19  21

    最近发现用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中运行。

    最新回复(0)