你排序的话是整体100条记录都排序 还是就排10条啊?
肯定是你的SQL语句写的问题啊

解决方案 »

  1.   

    这个问题我也遇到过,只是不是用的hibernate,应该是oracle自身的问题
      

  2.   


    select * from (select rownum ro,t.* from xxx t) where rownum<=10 and ro>5没问题
      

  3.   

    而且hibernate有自带的分页方法 不需要你去写
    setFirstResult();
    setMaxResult();
    配置好数据库方言会自动帮你转换为各数据库的分页语句
      

  4.   


    hibernate在查询第一页时与查询第二页及之后页时,生成的查询代码都不同,这肯定是hibernate的问题啊,如果在查询第一页时时,也使用:
    select * from (select row_.*,rownum rownum_ from (myquery) row_) where rownum_<=10 and rownum_>0 
    是不会有任何问题的,但hibernate偏偏在查询第一页时,使用:
     select * from (myquery) where rownum<=10  这样会导致查询结果的顺序不一致的啊,这应该是hibernate的BUG吧。
      

  5.   

    加上 order by  主键
      

  6.   

    我的代码就是
    x.setFirstResult(start);
    x.setMaxResult(size);
    list = x.list();问题是hibernate在生成目标查询代码的时候,第一页和非第一页的查询代码是不同的。
      

  7.   


    1.我的代码中 myquery 部分是包含order by的
    2.不一定要按主键排序吧?实际的业务情况,有些是不能按主键排序的。
      

  8.   


    你试试看:
    select * from (select t.* from xxx t order by t.x1 asc) where rownum<=10

    select * from (select row_.*,row_.rownum rownum_ from (select t.* from xxx t order by t.x1 asc) row_) where rownum_<=10 and rownum_>0这两种结果是不一样的,现在的问题就是我发现Hibernate里,第一页是采用的上者的方式,而非第一页时采用的是下者的方式。
      

  9.   

    有可能 myquery  部分的排序大面积重复 所以没有一个标识
    oracle 每次查询返回的结果顺序不是相同的 
    order by 支持按多列排序 你可以在最后加上 id 不影响什么
      

  10.   

    那就是你的sql写的有问题
    帖sql
      

  11.   

    hibernate分页第一页和第二页肯定是不一样的,这是它的效率考虑的原因,你说的数据第一页和第二页重复就是oracle的问题,我以前就碰到过这样的问题
      

  12.   


    对头,Oracle的那个有子查询影响速度
      

  13.   

    楼主的问题是 源于Oracle不支持三层嵌套查询排序。Hibernate使用这种分页方式的话,其实就是三层嵌套查询,首先是对你的条件查找出结果集,然后对结果集分页,因为Oracle不支持由此产生了第一页中的某些数据会在第二页中出现,解决的方法是自己写sql或者是使用其他的内置对像分页方式
      

  14.   

    是由于 第一页第二页不同的sql 造成数据库执行计划不一致,然后就出现楼主的情况了 
      

  15.   

    加了个Id,看到楼主在其他地方发的帖子有人回了,说是排序的字段不够,所以加个id,加了id排序,唯一值排序就可以了。太感谢了。
      

  16.   

    http://blog.csdn.net/polohoho1/article/details/9283957