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