query.setFirstResult(0)和query.setFirstResult(5)生成的sql不一样。

licwsh 2014-12-17 03:26:41
query.setFirstResult(0);
query.setMaxResults(5);

query.setFirstResult(1);
query.setMaxResults(5);
hibernate 自动生成sql后不一样
query.setFirstResult(0);
如下:
select
*
from
( select
article0_.id as id241_
from
v_article article0_
where
article0_.articleClass_id in (
select
articlecla1_.id
from
v_articleclass articlecla1_
where
articlecla1_.sysClass=0
and articlecla1_.deleteStatus=0
and articlecla1_.sequence<10
)
order by
article0_.ishot desc,
article0_.id )
where
rownum <= ?

query.setFirstResult(1);如下:
select
*
from
( select
row_.*,
rownum rownum_
from
( select
article0_.id as id241_
from
v_article article0_
where
article0_.articleClass_id in (
select
articlecla1_.id
from
v_articleclass articlecla1_
where
articlecla1_.sysClass=0
and articlecla1_.deleteStatus=0
and articlecla1_.sequence<10
)
order by
article0_.ishot desc,
article0_.id ) row_ )
where
rownum_ <= ?
and rownum_ > ?
这样的话在进行分页的时候,第一页和第二页有可能出现重复的情况(感觉是在order by的结果存在不唯一的时候:像上面的ishot的值一样的时候,有可能存在重复的情况,原因就是第一次的setFirstResult(0)生成的sql和后面不等于0生成的sql不一样。)
请问有大神遇到这样的问题吗?解决方法可以是再加一个order by id,就可以解决了,但是有没有办法使setFirstResult等于0的时候和不等于0的时候 生成的sql 一样。

求教。。。。
...全文
138 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
licwsh 2014-12-17
  • 打赏
  • 举报
回复 1
自己先顶一下!!!

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧