我正在使用带有oracle 10g配置的spring 3.2和Hibernate JPA。 我必须以10条记录的页面显示一个表的记录,目前共有28条记录。
所以我准备了一个持久性查询并将其设置为FirstResult
和MaxResult
:
String sql = "From instanceDetailLog Where formName='GPB' Order By instanceId";
Query query = entityManager.createQuery(sql);
query.setFirstResult(((pageNumber*recordsToFetch)-recordsToFetch));
query.setMaxResults((pageNumber*recordsToFetch));
List<Object> dataList = query.getResultList();
最初对于记录1-10,记录被正确获取。但是当我要求记录11-20的下一页时,它给了我18条记录(所有剩余的记录),在第三页我得到重复记录。
我偶然发现了article。其中描述了oracle和JPA中的分页问题。
有人可以告诉我我错过了什么吗?
答案 0 :(得分:0)
MaxResults应该是一个常量recordsToFetch。使用pageNumber * recordsToFetch,你要告诉它获取20行,这就是你获得最后18行的原因。