I don't want to be annoying.
However, I have looked through the faq.
I have found
Code:
( (Integer) s.createFilter( collection, "select count(*)" ).iterate().next() ).intValue()
However, how does this help for named queries?
I am using the following code with "name" is supplied parameter of the named query we want to execute.
Code:
public ResultInfo getPagedResults(final String name, final int pageSize, final int currentPage) throws ServiceException{
return (ResultInfo) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query q = session.getNamedQuery(name);
int resultCount = ((Integer) session.createFilter( q.list(), "select count(*)" ).iterate().next()).intValue();
q.setCacheable(true);
q.setMaxResults(pageSize);
q.setFirstResult(currentPage * pageSize);
ResultInfo ri = new ResultInfo(q.list(), resultCount);
return ri;
}
});
}
I am afraid that the q.list() below already is returning a full list from the database.
Code:
int resultCount = ((Integer) session.createFilter( q.list(), "select count(*)" ).iterate().next()).intValue();
Is there a solution that will work for any named query(and mysql 4.0ish, ie. no subselects)
Thank you,
Matthew Payne[/code]