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

来源:互联网 发布:赵薇事件真相 知乎 编辑:程序博客网 时间:2024/05/18 01:08

在使用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

 

0 0
原创粉丝点击