2015-02-11 41 views
1

我們有一個用例來計算no。實際查詢返回的行數。我沒有得到如何使用hibernate中的條件來獲取它。 例如,假設我想運行查詢需要關於HIbernate計數查詢的幫助

select sum(TOTAL_EARNINGS) from table where column1 = 'value1' group by column2); 

隨着此查詢結果,我也希望得到總行上面的查詢返回的(上面的查詢可能有rownum的限制也不過總的行我都不理ROWNUM限制)。

select count(*) from (select sum(TOTAL_EARNINGS) from table 
       where column1 = 'value1' group by column2); 

有沒有什麼簡單的方法來獲取這些數據。我很好,運行單獨的查詢來獲取計數數據,但我沒有得到如何使用條件在休眠中寫這個。我甚至無法在SubQueries中看到我可以使用的任何選項

+1

爲什麼你不能從java端計算行的特定原因?或者使用HQL? – Deltharis 2015-02-11 12:41:43

回答

0

一般而言,您可以使用預測。 你可以這樣做,如果你有一個實體「你」由Hibernate映射:

編輯: 因此您的意見,您需要兩個結果,總計數和一羣以結果。

//the group by results... 
List result1 = session.createCriteria("Your.class").setProjection(Projections.projectionList() 
      .add(Projections.groupProperty("column2")) 
      .add(Projections.sum("totalErnings")) 
    ).list(); 

//the total count result 
return (Integer) session.createCriteria("Your.class").add(Restrictions.eq("column1", val)).setProjection(Projections.rowCount()).uniqueResult(); 
+0

我的查詢也有一個條件組。所以如果我在你的代碼中添加groupBy column2,那麼我會在第2列值級別上得到count(*)的結果。但我希望總結果數 – Rahul 2015-02-12 06:37:35

+0

您好勞爾,我建議您分兩步做這個......我會相應地更改我的代碼 – Paolof76 2015-02-12 08:44:13

+0

查詢2不會生成我想要的正確結果。基本上我想在應用group by之後不需要任何行。沒有按標準分組且沒有按標準分組的行是不同的 – Rahul 2015-02-12 10:45:02