Java Primefaces datatable lazyloading分页行数显示错误

Java Primefaces datatable lazyloading分页行数显示错误,java,hibernate,jsf-2,primefaces,pagination,Java,Hibernate,Jsf 2,Primefaces,Pagination,我正在尝试为Primefaces数据表实现lazyloading。我有一个过滤条件,我已经实现为 public List<Request> getRequest(int startingAt, int maxPerPage, String sortField, SortOrder sortOrder, Map<String, String> filters) { Criteria criteria = sessionFactory

我正在尝试为Primefaces数据表实现lazyloading。我有一个过滤条件,我已经实现为

public List<Request> getRequest(int startingAt, int maxPerPage,
            String sortField, SortOrder sortOrder, Map<String, 
String> filters) {
        Criteria criteria = sessionFactory.getCurrentSession().
            createCriteria(Request.class);          
        for (Map.Entry<String, String> entry : filters.entrySet()) {            
            if(entry.getValue()!=null){             
                criteria.add(Restrictions.ilike("prNo",
                "%"+entry.getValue()+"%"));             
            }
        }
        criteria.setMaxResults(maxPerPage);
        criteria.setFirstResult(startingAt);
        return criteria.list();
    }
这是一个实施过程

int count = ((Long) sessionFactory.getCurrentSession()
                .createQuery("select count(*) from Request").uniqueResult())
                .intValue();

我怎样才能做到这一点呢?

INMO,你最好使用
LazyDataModel
()


在重写的加载方法中,您应该执行筛选逻辑并获得结果,然后获取其大小并使用它…

在筛选数据时,确保
setRowCount
将设置筛选数据的大小,例如
lazyModel.setRowCount(criteria.list().size())
@Daniel如果我不使用DataModel进行懒散加载,那么在managedbean中获取
criteria.list().size()
的最佳方法是什么?在managedbean中不直接使用DataModel作为LazyLoading和overide load方法是一个好主意吗?在Mo中,您最好使用
LazyDataModel
(像在showcase中一样扩展它),在被重写的
load
方法中,您应该执行过滤逻辑并获得结果,比得到它的尺寸并使用它…@丹尼尔谢谢你的建议。我已经尝试实现LazyDataModel,由于某种原因,我得到了nullpointer异常。我已经为这个@Daniel创建了一个新帖子,如果你发布一个答案,我将非常乐意接受。
lazyModel.setRowCount(getRequestService().getRequestCount());
int count = ((Long) sessionFactory.getCurrentSession()
                .createQuery("select count(*) from Request").uniqueResult())
                .intValue();