Hibernate分页功能数据重复问题

今天遇到一个很憋屈的问题那就是hibernate分页查询中出现重复数据,本来一直没有在意,以为是数据问题,但是一查程序和数据都没有问题,继续深入查看,找到问题了就是order By 时出的问题,唉。。。。

oracle中的分页机制就是通过rownum函数来实现的,rownum顺序号的生成是排序后生成的,例如:
select * from web_user where  rownum > 0 and rownum <= 10 order by name

这个排序中使用了name字段作为排序,但是数据不能保证name是唯一的,所以就会出现重复数据。当然如果将name设定为唯一索引那么就可以了。

所以如果oracle中需要分页排序的话,那么就要使用唯一键排序,当然如果使用多条件联合排序,那么要确保其中存在唯一键。