query.setFirstResult(0)和query.setFirstResult(5)生成的sql不一样。
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 一样。
求教。。。。