Q: How to count results with criteria without initializing whole collection.
I have pageable page.
When I do search, I return only 10 results per page, but I need total number of results to show on page.
Code:
Example ex = Example.create(user).ignoreCase().enableLike(MatchMode.ANYWHERE);
Criteria c = session.createCriteria(User.class).add(ex);
c.setFirstResult(10);
c.setMaxResults(20);
return c.list();
1. Without
c.setFirstResult and c.setMaxresults hibernate works 6 sec, so c.list().size() is very slow,
2. With
session.createQuery("select count(*) from User ").list().get(0);
hibernate works 26 msec
BUT I do not want to use query, I want to count results with criteria. Is that possible?
Idea:
Criteria c = session.createCriteria(User.class, "count(*) as id").add(ex);
~select id, first_name, ...all property from User, count(*) as id..
Is there a option to change selct clause in criteria expression (to remove all expcept count(*))?
|