Hibernate分页数据重复显示
Hibernate分页数据重复显示
413953949 发表于2年前
Hibernate分页数据重复显示
  • 发表于 2年前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: hibernate 分页 重复显示

问题:

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();

}


共有 人打赏支持
粉丝 0
博文 3
码字总数 531
×
413953949
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: