DB2中的Hibernate Criteria

时间:2011-02-15 20:24:22

标签: hibernate db2

如何编写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。

最值得赞赏的任何建议。

此致

拉​​吉

1 个答案:

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