2012-07-19 38 views
0

我想從表中提取記錄,其中最高年齡+名從表冬眠最高記錄與附加標準

Criteria criteria = session 
.createCriteria(Person.class) 
.setProjection(Projections.max("age")); 
Integer maxAge = (Integer)criteria.uniqueResult(); 

這上面的代碼讓我在整個表中的最高年齡,而我只想在人名=「約翰」的情況下獲得最高年齡

我該如何做到這一點?

我試圖以這種方式

Criteria critNew = session 
.createCriteria(Person.class); 
critNew.add(Restrictions.eq("personName","john")); 
critNew.add(Restrictions.eq("age", maxAge)); 

事後添加性判據但這樣只會搜索約翰那裏MAXAGE是

例如,如果「在整個表中的最高年齡」 MAXAGE在整個表是50 並有3人的名稱爲「約翰」,年齡「10」,「20」,「30」 我的代碼將無法正常工作

請建議 感謝

回答

1

只是放在一起成爲一個標準。

Criteria criteria = session 
    .createCriteria(Person.class) 
    .add(Restrictions.eq("name", "john")) 
    .setProjection(Projections.max("age")); 

Integer maxAge = (Integer)criteria.uniqueResult(); 
+0

謝謝,但以這種方式,結果會很好,但我的標準返回一個整數(最高數字)。當我嘗試把它放在列表中,即List list = criteria.list();列表= 46(最高數字),​​因爲我正在尋找完整的人員類別,任何想法.. – junaidp 2012-07-19 04:21:55

+0

更改最後一行'List maxaeges =(List)criteria.list();' – dgregory 2012-07-19 05:12:53