我有以下mysql语句SELECT * FROM (SELECT * FROM NINJA ORDER BY NAME LIMIT 0,5) AS TABLE ORDER BY NAME DESC
。我不知道如何将其转换为休眠标准。我做这种select语句的原因是得到前5个结果,然后降序排列。在我目前的标准中,我在做正常的Order.addOrder(Order.desc(field))
会发生什么,它会得到整个记录的最后5个结果。休眠 - 如何使用条件选择内选择
请帮忙。提前致谢。
UPDATE:
下面是我的一些代码:
Criteria ninjaCriteria = session.createCriteria(Ninja.class);
ninjaCriteria.setFirstResult(firstResult);
ninjaCriteria.setMaxResults(maxResult);
if (isAscending)
ninjaCriteria.addOrder(Order.asc(field));
else
ninjaCriteria.addOrder(Order.desc(field));
注:firstResult
,maxResult
,isAscending
,并field
是变量。
即使与HQL派生表是不可能的:http://stackoverflow.com/questions/2433729/subquery-using-derived-table-in-hibernate-hql,并与条件查询,你可以去尽可能远,使用DetachedCriteria和另一个限制进行查询的是DetachedCriteria没有setMaxResult –