Usually pagination queries look like this. Is there a better way instead of making two almost equal methods, one of which executing "select *..." and the other one "count *..."?
public List<Cat> findCats(String name, int offset, int limit) {
    Query q = session.createQuery("from Cat where name=:name");
    q.setString("name", name);
    if (offset > 0) {
     q.setFirstResult(offset);
    }
    if (limit > 0) {
     q.setMaxResults(limit);
    }
    return q.list();
}
public Long countCats(String name) {
    Query q = session.createQuery("select count(*) from Cat where name=:name");
    q.setString("name", name);
    return (Long) q.uniqueResult();
}