public Pagination<ServiceOrderView> manageOrderList( Pagination<ServiceOrder> page, String exployerName, String telephone) { List<Object> params = new ArrayList<Object>(); StringBuffer hql = new StringBuffer("from ServiceOrder r where ovld = true "); if (!StringUtils.isEmpty(telephone)) { hql.append(" and r.mobilePhone = ? "); params.add(telephone); } if (!StringUtils.isEmpty(exployerName)) { hql.append(" and r.employer.username like ? "); params.add("%" + exployerName + "%"); } StringBuffer countHql = new StringBuffer(" select count(r.id) "); countHql.append(hql); Object[] objParams = new Object[params.size()]; for (int i = 0; i < objParams.length; i++) { objParams[i] = params.get(i); } Pagination<ServiceOrder> p = dao.getPageResultObjectParams( ServiceOrder.class, hql.toString(), page.getPageNo(), page.getPageSize(), objParams); List<ServiceOrder> list = p.getResult(); List<ServiceOrderView> viewList = new ArrayList<ServiceOrderView>(); for (ServiceOrder order : list) { viewList.add(order.view()); } Pagination<ServiceOrderView> pa = new Pagination<ServiceOrderView>(viewList, p.getPageNo(), p.getPageSize()); Long count = dao.getSingleResultByHQLObjectParams(Long.class, countHql.toString(), objParams); pa.setResultSize(count); return pa; }