Hibernate 先排序再分页问题

本文探讨了在DB2数据库中使用Hibernate进行分页查询时遇到的排序问题。当使用特定字段组合进行排序时,发现相同的字段值导致排序失败。通过增加唯一标识符解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DB2为例hibernate分页排序sql

ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC  排序失败

ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC,t.T_ID 排序成功

 

示例Sql:

select * from ( select rownumber() over(ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC,t.T_ID) as rownumber_, t.STATIS_DATE,t.AREA_DESC,t.SUBS_AREA_DESC,t.BLOCK_DESC,t.COMTY_DESC,t.USER_NAME,t.USER_COUNT,t.CHANG_USER_COUNT,t.CHANG_USER_COUNT/t.USER_COUNT,t.AREA_CODE,t.SUBS_AREA_CODE,t.BLOCK_CODE,t.COMTY_CODE,t.USER_FLAG from GIS.TB_ALL_ANALYSE_M_LEVEL t  WHERE  1=1  AND t.STATIS_DATE  BETWEEN 201301 AND 201310  AND t.LEVEL = '1' ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC,t.T_ID ) as temp_ where rownumber_ <= ?

 

问题定位:

主要原因是t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC排序字段在结果集中完全一样的情况下,排序失败。

hibernate的排序函数也不能正确将排序条件加到先排序sql部分

over(ORDER BY t.STATIS_DATE desc, T.AREA_CODE,T.SUBS_AREA_CODE,T.BLOCK_CODE,T.COMTY_DESC,t.T_ID)

所以当加上t.T_ID主键唯一字段排序条件则成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值