@Override
  public long count(final SearchCriterion criterion) {
    final String countAlias = "count";
    SearchCriteriaBuilder scb = find();
    if (criterion != null) {
      scb.add(criterion);
    }
    scb.setProjection(alias(rowCount(), countAlias));
    scb.addOrder(asc(countAlias));

    Entity countProjection = scb.setMaxResults(1).uniqueResult();
    return (Long) countProjection.getField(countAlias);
  }