Некоторая помощь в запросе Hibernate Criteria - PullRequest
4 голосов
/ 05 февраля 2010

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

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

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();

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

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

Ответы [ 2 ]

6 голосов
/ 06 февраля 2010

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

criteria.setProjection (нуль)

criteria.setResultTransformer (Criteria.ROOT_ENTITY);

1 голос
/ 06 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...