81,114
社区成员
发帖
与我相关
我的任务
分享
public PageFetch findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize, final int startIndex, final Order[] orders) {
return (PageFetch) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
DetachedCriteria countCriteria = (DetachedCriteria) SerializationUtils
.clone(detachedCriteria);
countCriteria.setProjection(Projections.rowCount());
int totalCount = (Integer) countCriteria
.getExecutableCriteria(session).uniqueResult();
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
if (!ArrayUtils.isEmpty(orders)) {
for (Order order : orders) {
if(order != null)
criteria.addOrder(order);
}
}
List items = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PageFetch ps = new PageFetch(items, totalCount,
pageSize, startIndex);
return ps;
}
}, true);
}