hibernate不能使用row_number()

hibernate的使用过程中,遇到了很多hibernate语句产生的问题。

select  min(max(case_numnum)) + 1 case_numnum
from
 (select t.case_numnum,t.case_numnum - row_number() over(order by t.case_numnum) diff
from xzss_info_new t
where t.case_org='0000' and t.case_numyear='2017')
group by diff;

对于以上的代码,使用了row_number() over来进行数据的排序,hibernate不提供支持。

select min(max(case_numnum)) + 1 case_numNum 
from (select case_numnum,(case_numnum-rownum) diff 
from (select t.case_numnum 
from xzss_info_new t where t.case_org='0000' and t.case_numyear='2017' order by t.case_numnum asc))
 group by diff

于是改成了这种形式,然后发现hibernate只支持where的嵌套子查询。

select case_numnum,(case_numnum-rownum) diff 
from xzss_info_new
where id in
 (select t.id 
 from xzss_info_new t where t.case_org='0000' and t.case_numyear='2017' )

本想改成where嵌套,但修改内部的子查询时,发现in 无法和子查询的order by同时使用。

可以解决的方案有几种:
1、使用视图
2、使用sql查询
3、hibernate自身创建视图替代sql的形式https://wenku.baidu.com/view/12383f0df12d2af90242e6cf.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值