【table】结构
表中没有唯一键
create or replace table
(
name1 varchar(100),
name2 varchar(100),
qty1 int
)
【第一页查询】
在Hibernate框架中经常会使用到框架本身的分页查询功能,下面是查询表【table】的所有数据,
备注:表【table】没有【唯一】键
String hql = "select * from table";
Query query = session.createQuery(hql);
query.setFirstResult((page - 1) * rows);
query.setMaxResults(rows);
【转换SQL】
查询第一页数据时会由框架本身将HQL语句转为SQL脚本获取数据
//page: 1 , rows:10
select * from table where rownum < 10
【第二页查询】
在查询数据的外面又重新套了一层查询,在没有【主键】这样的查询的结果的顺序会重新排列,那么这一页的数据就有可能是第一页出现过的,这样会导致两页数据【重复】的情况
//page:2 , rows: 10
select rownum row_num,a.* from (select * from table) a where row_num>10 and row_num<=20
【解决方案】
1. 在表【table】中加上主键ID
2. 在查询数据的后面加上排序
select * from table order by name1,name2