Hibernate分页查询oracle数据库显示结果集与实际查询不匹配

时间:2022-05-04 06:25:29

在使用Hibernate分页查询功能之后,会发现查询出来的结果集不是我想象的,有时记录顺序会变动,有时有的记录会查不出来,于时只好把hibernate的源码拿来看看,结果还真发现了问题,以下是我的修改方案:

  //if (hasOffset) {
    pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
  //}
  //else {
  // pagingSelect.append("select * from ( ");
  //}
  pagingSelect.append(sql);
  if (hasOffset) {
    pagingSelect.append(" ) row_ ) where rownum_ <= ? and rownum_ > ?");
  }
  else {
    pagingSelect.append(" ) row_ ) where rownum_ <= ?");
   //pagingSelect.append(" ) where rownum <= ?");
  }

这是hibernate对oracle方言中的代码,我想大家都能看的懂!要修改的类文件是:

Oracle9iDialect.java

Oracle9Dialect.java

Oracle8iDialect.java

Oracle8Dialect.java

OracleDialect.java