Некоторая помощь с запросом критериев гибернации

Может кто-нибудь, пожалуйста, помогите мне завершить/очистить этот запрос. Я пытаюсь сначала получить количество строк в таблице, затем мне нужно получить набор строк. Я не уверен, как я могу использовать один и тот же экземпляр критериев для выполнения обоих запросов.

Чтобы получить счет, у меня есть что-то вроде этого:

Criteria criteria = session.createCriteria(MyTable.class);
criteria.setProjection(Projections.rowCount());
Integer count = (Integer) criteria.uniqueResult();
int numRows = count.intValue();

И для извлечения строк (мне нужно только подмножество для разбиения на страницы):

Criteria criteria = session.createCriteria(MyTable.class);
criteria.setFirstResult(offset);
criteria.setMaxResults(limit);
criteria.addOrder(Order.desc(orderBy.toString()));
List<MyType> myType = criteria.list();

Нужно ли мне сначала обнулить проекцию или что-то в этом роде, чтобы я мог использовать критерии для выборки строк (после выполнения подсчета)?

Мне бы хотелось, чтобы мне помогли очистить это, чтобы я мог эффективно выполнять оба запроса и в итоге получить общее количество строк и список результатов. Спасибо!!


person oym    schedule 05.02.2010    source источник


Ответы (2)


Вам нужно очистить проекцию счетчика и установить преобразователь результата для извлечения объектов MyTable. Попробуйте это для второго запроса:

критерии.setProjection(ноль)

критерии.setResultTransformer(Критерии.ROOT_ENTITY);

person sdavids    schedule 06.02.2010

Вы спрашиваете о повторном использовании одних и тех же критериев для подсчета и проекции, верно? Я не мог найти способ сделать это, поэтому я устанавливал критерии и ограничения в свой собственный метод и создавал его дважды... один раз для подсчета и один раз для страницы данных. Если есть лучший способ, я весь слушаю...

person dotjoe    schedule 05.02.2010
comment
Да .. это то, что я в итоге сделал на данный момент .. спасибо за вклад - person oym; 06.02.2010