Primefaces データテーブルの遅延読み込みを実装しようとしています。として実装したフィルター条件があります
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();
}
そしてjsfページで
<p:column id="prNo" filterBy="#{req.prNo}"
headerText="PR No">
<h:outputText value="#{req.prNo}" />
</p:column>
私が直面している問題は、フィルター処理された行に n データテーブルのページ番号が表示され、実際のレコード数がまったく変更されないことです。たとえば、フィルターが条件に一致し、フィルター条件の行数が 12 の場合、ページネーションは1 of 3として表示され、ページは1 2 3のようになります。添付のスクリーン ショットを参照してください。
レイジーモデルのrowCountは次のように設定されています
lazyModel.setRowCount(getRequestService().getRequestCount());
それは実装です
int count = ((Long) sessionFactory.getCurrentSession()
.createQuery("select count(*) from Request").uniqueResult())
.intValue();
どうすればこれを達成できますか?