[Already posted to hibernate-users, but no responses.]


I have pagination working, but am doing so with two queries; one to get the results page and a second one to get the total count.

I'd like to do this in a single query: Is it possible to build a criteria, so my results set includes columns for each of the properties on my bean, plus an additional column which has the row count (downside: this is duplicated for each row in the page).

I figured I could build a projection like this to return all the beans properties plus the row count.

private Projection getProjectionsForBeanAndRowCount() {
ClassMetadata classMetadata = session().getSessionFactory().getClassMetadata(modelClass);

ProjectionList projectionList = Projections.projectionList();
String[] propertyNames = classMetadata.getPropertyNames();
for (String propertyName : propertyNames) {
return projectionList;

..and then write a ResultsTransformer to process these results, instantiating a class like:-

public class PageResult {
Object bean;
int rowCount;

..but it seems that by the time ResultsTransformer is called, you already have the bean instantiated.

Is there a way I can jump in at a slightly lower level, like at a single row of the result set, the level where the results bean's are built?

Any info much appreciated.

All the best, Jon