Критерии гибернации в DB2 - PullRequest
1 голос
/ 15 февраля 2011

Как написать запрос Hibernate Criteria для сортировки в порядке убывания только для первых 10 строк в DB2 dailect.

в Db2: у меня есть 20 записей в таблице сотрудников, которые начинаются с 1 ... 20.

если я запускаю ниже Query:

Select empname from emp order by desc empno fetch first 10 rows only.

Фактический результат должен быть: 10,9 ...., 1. Но в DB2 он возвращается 20,19 .... 11.

Любые предложения наиболее ценны.

С уважением,

Raj

1 Ответ

2 голосов
/ 16 февраля 2011

Вот как вы можете создать запрос критерия гибернации, который возвращает первые 10 строк в порядке убывания:

Critieria crit = session.createCriteria(Employee.class);
crit.addOrder(Order.desc("empno");
crit.setMaxResults(10);
List<Employee> emps = crit.list();

Имейте в виду, что при этом сотрудники будут возвращаться в порядке убывания на основе empno, поэтому он возвращает набор результатов empno, например 20,19, ... 11. Это то, что он должен делать, независимо от базовой базы данных, и, насколько я могу судить, то, что вы просили.

Дайте мне знать, если вы действительно хотите, чтобы это было 10,9, ... 1 (что технически не первые 10 строк в порядке убывания).

Edit: Если вы хотите, чтобы это было 10,9, ... 1 Я бы лично изменил критерии сортировки в порядке возрастания. Порядок будет 1 ..., 9,10, но эффект тот же:

crit.addOrder(Order.asc("empno"));

Если вы действительно хотите, чтобы оно было 10,9, ... 1, вы можете добавить следующее, хотя оно становится все более зависимым от имеющихся у вас данных. Все зависит от того, что вы пытаетесь сделать с данными, но это должно привести вас на правильный путь.

Critieria crit = session.createCriteria(Employee.class);
crit.addOrder(Order.desc("empno");
crit.setFirstResult(10);
crit.setMaxResults(10);
List<Employee> emps = crit.list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...