具体问题是:例如我现在有81条数据,每页显示20行数据,能显示5页数据,总行数是81。当我删除第五页最后一条数据时,分页的数据显示的是第四页的数据,但是行数变成100 页数显示的是5/4,分页的效果右边还可以点击。
代码如下:
public LazyDataModel<E> findModel(final String jpql,
final Map<String, String> values) {
LazyDataModel<E> lazyModel = new LazyDataModel<E>() {
@Override
public List<E> load(int first, int pageSize, String sortField,
SortOrder arg3, Map<String, String> arg4) {
// TODO Auto-generated method stub
integer = Long.valueOf(getResultCount(values))//获得数据库总数据
.intValue();
setRowCount(integer);//设置总行数
querys = createQuery(jpql, values);//查询数据库
setPageParameterToQuery(querys, first,pageSize, integer,this);//设置分页参数
return (List<E>) querys.getResultList();
}
};
lazyModel.setPageSize(20);
lazyModel.setRowCount(1);
return lazyModel;
}
/**
* @see 设置结果集
* @param query
* @param first 结果偏移量
* @param pageSize 最大查询数量
*/
private void setPageParameterToQuery(javax.persistence.Query query,
int first, int pageSize,int count,LazyDataModel ldm) {
System.out.println("偏移量:"+first+":"+count);
if(first == count)
{
query.setFirstResult(first-pageSize);
query.setMaxResults(pageSize);
System.out.println("设置偏移量");
}else{
query.setFirstResult(first);
query.setMaxResults(pageSize);
}
}