如何编写Hibernate Criteria查询,以便在DB2 dailect中以前10行的降序排序。
在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。
最值得赞赏的任何建议。
此致
拉吉
答案 0 :(得分:2)
以下是如何创建一个以降序返回前10行的hibernate条件查询:
Critieria crit = session.createCriteria(Employee.class);
crit.addOrder(Order.desc("empno");
crit.setMaxResults(10);
List<Employee> emps = crit.list();
请记住,这将根据empno
按降序返回员工,因此返回的结果集为20,19,... 11。无论基础数据库如何,这都应该是它应该做的,并且就我所知道的而言。
如果你真的希望它是10,9,...... 1(技术上不是前10行的降序),请告诉我。
修改强> 如果你想要它是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();