HQL выберите диапазон результатов - PullRequest
2 голосов
/ 11 декабря 2011

Каков правильный / эффективный способ получения подмножества результатов из спящего режима?

Предполагается, что продукты - это таблица, содержащая 3000 записей.

Session session = SessionFactorys.getSessionFactory().openSession();
Query query = session.createQuery("from products p");
List result = query.list().subList(30, 40);     
session.disconnect();

Код выше дозы, кажется, не очень эффективен, есть лучший способ, я пытаюсь найти что-то вроде.

Query query = session.createQuery("from products p range(30,40)");

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Используйте query.setFirstResult() и query.setMaxResults(), но имейте в виду, что это, конечно, зависит от порядка набора результатов.

Query query = session.createQuery("from products p");
query.setFirstResult(30);
query.setMaxResults(10);
List result = query.list();
0 голосов
/ 11 декабря 2011

Посмотрите на setFirstResult и setMaxResults в Javadoc запроса .

Обратите внимание, что они применяются к строкам, возвращаемым вызовами JDBC, а не к сущностям, возвращаемым запросом. В общем, это эквивалентно. Но это не так, если ваш запрос извлекает ассоциацию * ToMany.

...