/**
   * 通过Finder获得记录总数
   *
   * @param finder 条件组装器
   * @return 记录数
   */
  public int countQueryResult(Finder finder) {
    String hql = finder.getRowCountHql();
    Query query = getSession().createQuery(hql);
    finder.setParamsToQuery(query);

    if (finder.isCacheable()) {
      query.setCacheable(true);
    }

    return ((Number) query.iterate().next()).intValue();
  }
 /**
  * 通过Finder获得分页数据
  *
  * @param finder 条件组装器
  * @param pageNo 当前页码
  * @param pageSize 每页条数
  * @return 分页信息,其中包含有数据列表
  */
 @SuppressWarnings("unchecked")
 public Pagination queryForPage(Finder finder, Integer pageNo, Integer pageSize) {
   int totalCount = countQueryResult(finder);
   Pagination p = new Pagination(pageNo, pageSize, totalCount);
   if (totalCount < 1) {
     p.setList(new ArrayList());
     return p;
   }
   Query query = getSession().createQuery(finder.getOrigHql());
   finder.setParamsToQuery(query);
   query.setFirstResult(p.getFirstResult());
   query.setMaxResults(p.getPageSize());
   if (finder.isCacheable()) {
     query.setCacheable(true);
   }
   List list = query.list();
   p.setList(list);
   return p;
 }
 /**
  * 通过Finder获得列表数据
  *
  * @param finder 条件组装器
  * @return 对象列表
  */
 @SuppressWarnings("unchecked")
 public List find(Finder finder) {
   Query query = finder.createQuery(getSession());
   List list = query.list();
   return list;
 }