赞
踩
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主键唯一字段排序条件则成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。