我有以下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 –