Вы должны выполнить отдельный запрос, чтобы получить максимальные результаты ... и в случае, когда между временем A первого раза клиент отправляет запрос поискового вызова ко времени B, когда выдается другой запрос, если добавляются новые записи или некоторые записи теперь соответствуют критериям, тогда вам нужно снова запросить максимум, чтобы отразить такие. Я обычно делаю это на HQL, как это
Integer count = (Integer) session.createQuery("select count(*) from ....").uniqueResult();
для Criteria
запросов Я обычно помещаю свои данные в DTO, как это
ScrollableResults scrollable = criteria.scroll(ScrollMode.SCROLL_INSENSITIVE);
if(scrollable.last()){//returns true if there is a resultset
genericDTO.setTotalCount(scrollable.getRowNumber() + 1);
criteria.setFirstResult(command.getStart())
.setMaxResults(command.getLimit());
genericDTO.setLineItems(Collections.unmodifiableList(criteria.list()));
}
scrollable.close();
return genericDTO;