2011-08-05 44 views
13

如果我的實體獲得作爲一個男人,它有姓名,身份證性能,具有JPA我如何獲得檢索結果這樣的查詢,如何使用JPA GROUP BY獲取SELECT值和COUNT值?

entityManager.createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 

有沒有辦法使用org.springframework.jdbc.core.RowMapper與JPA?

回答

35

當你執行這個查詢,而不是像往常一樣直接得到一個對象列表,你會檢索一個列表Object[]

對於您檢索的每個數組,第一個元素將是該行的名稱,第二個數字。我不認爲你可以在JPA中使用RowMapperRowMapper來自Spring,與JPA不同。也許有些JPA實現允許這樣做,但我認爲這樣做並不明智。

編輯 - 代碼示例:

List<Object[]> results = entityManager 
     .createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 
     .getResultList(); 
for (Object[] result : results) { 
    String name = (String) result[0]; 
    int count = ((Number) result[1]).intValue(); 
} 
+0

Barousse嗨!非常感謝您的反饋。如果你有,可以請你把一些樣本代碼的方式,可以檢索數據作爲「對象[]」列表,因爲我還沒有任何想法如何將這些結果與某些對象相匹配。謝謝。 – Channa

+0

@Channa:在答案中增加了代碼示例:) –

+0

嗨Barousse!非常感謝您的好回饋,它工作正常:),祝您有美好的時光! – Channa