809204304@qq.com的gravatar头像
809204304@qq.com 2014-09-28 08:48:35

hibernate查询语句中order by中null值排序如何处理?

目前有个DAO方法,采用HQL进行查询,最后order by A desc ,但A有空值,由于,后台数据库是oracle,所以采用desc到话,默认null值最大,查询出来的结果排在了最前面,实际需求需要把空值的结果集放在最后。不知道各位有没有遇到类似的问题,帮忙解决一下!先谢谢了

所有回答列表(6)
xforgchen的gravatar头像
xforgchen  LV4 2014年9月28日

order by xxx nulls last

小汤姆的gravatar头像
小汤姆  LV11 2014年9月28日

试试:select * from Tab_A order by Tab_A. Col_A (asc/desc) nulls first ------>null 值排在最前面 

select * from Tab_A order by Tab_A. Col_A (asc/desc) nulls last ------>null 值排在最后面 

tianxyz1988的gravatar头像
tianxyz1988  LV10 2014年9月28日

order by A desc nulls last 这种写法,在hibernate高版本中才支持的

遇见,的gravatar头像
遇见,  LV36 2014年9月28日

Collections.sort(list);

数据库处理的话就这样吧   ORDER BY NVL(A, '-') DESC;

最代码官方的gravatar头像
最代码官方  LV167 2014年9月28日

我是最这样处理。

建议所有的字段都不要为NULL,然后设置默认值,比如字符串类型字段默认为"",数字类型默认为0

这样order by按字段排序就好处理了。

篱笆外的小猫的gravatar头像
篱笆外的小猫  LV10 2014年9月29日

感觉可以自己定义一个拦截器,当生成sql后,为sql增加自定义的修改。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友