文档章节

Hibernate分页数据重复显示

4
 413953949
发布于 2015/06/17 14:08
字数 148
阅读 18
收藏 0

问题:

hibernate分页查询是第一页生成的sql与第二页sql不同,导致sql执行策略不一致

解决:

1、每个分页的sql添加 order by

2、重写 hibernate dialect,重写方法 getLimitString

@Override

public String getLimitString(String sql, boolean hasOffset) {

sql = sql.trim();

boolean isForUpdate = false;

if (sql.toLowerCase().endsWith(" for update")) {

sql = sql.substring(0, sql.length() - 11);

isForUpdate = true;

}


StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);

if (hasOffset) {

pagingSelect

.append("select * from ( select row_.*, rownum rownum_ from ( ");

} else {

pagingSelect

.append("select * from ( select row_.*, rownum rownum_ from ( ");

}

pagingSelect.append(sql);

if (hasOffset) {

pagingSelect.append(" ) row_ ) where rownum_ <= ? and rownum_ > ?");

} else {

pagingSelect.append(" ) row_ ) where rownum_ <= ? and rownum_ > 0");

}

if (isForUpdate) {

pagingSelect.append(" for update");

}

return pagingSelect.toString();

}


© 著作权归作者所有

共有 人打赏支持
4
粉丝 0
博文 3
码字总数 531
作品 0
襄阳
私信 提问
数据分页资料汇总

1.数据库分页Java实现(http://www.cnblogs.com/ITtangtang/archive/2012/04/21/2462385.html) 2.Java分页代码的实现(http://www.open-open.com/lib/view/open1346772322162.html) 3. java分页......

IT追寻者
2016/08/13
41
0
hibernate中带查询条件的分页

所谓分页,从数据库中分,则是封装一个分页类。利用分页对象进行分页。 但,分页往往带查询条件。 分页类的三个重要数据:【当前页码数】,【数据库中的总记录数】,【每页显示的数据的条数】...

无信不立
2014/07/01
0
0
学习hibernate(八) -- HQL查询语句

HQL语句 HQL(Hibernate Query Language)提供更加丰富灵活、更为强大的查询能力。 可设定WHERE 可进行投影查询 可分页 可分组 可做连接查询 有聚合函数 支持子查询 可动态绑定参数 先看一个H...

杰克鹏仔
2016/04/11
103
0
web项目脚手架--Rapid Framework

基于spring,struts(struts2),hibernate的web项目脚手架 一个类似 ruby on rails 的java web快速开发脚手架,本着不重复发明轮子的原则,框架只是将零散的struts(struts2)+spring+hibernate各个...

匿名
2009/04/28
21.9K
4
数据库查询返回特定结果即分页查询

1 几种不同数据库的不同的分页写法: a mysql a) 查询前n条记录select * from table_name limit 0,nb) 查询第n条到第m条select * from table_name limit n,m b oracle a)查询前n条记录selec...

王小明123
2013/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
22分钟前
4
0
oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

查看trace 文件: MRP0: Background Managed Standby Recovery process started (amls) started logmerger process Sun Jan 20 07:55:53 2019 Managed Standby Recovery starting Real Time ......

hnairdb
42分钟前
2
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linux-tao
今天
1
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxprobe16
今天
9
0
OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
今天
153
7

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部