2012-04-16 133 views
5

我已經創建了一個擴展CrudRepository, 這個倉庫有一個@Query符號的方法的存儲庫:彈簧數據@Query映射結果問題

代碼:

@Query("select itemType, count(*) as count from Item where User_id = :userId group by itemType") 
List<Map<String, Long>> countItemsForUser(@Param("userId") Long userId); 

我的問題m有這是返回一個ArrayList的Object(s)而不是一個Map的列表。 我讀過JPA無法返回地圖的地方,所以這就是爲什麼我將結果填入列表>。

我不知道什麼是解決此問題或快速訪問結果數據的最佳方法。 我試過鑄造,但沒有制定出兩種:

for(Object item: items) { 
    Map<String,Long> castedItem = (HashMap<String,Long>)item; 
} 
+0

item,它是循環內的Object類型,沒有方法getString? – 2012-04-16 08:13:18

回答

4

見的Hibernate的官方文檔在這個例子。 Here

for (Object item:items) { 
    Object[] tuple = (Object[]) item; 
    String itemType = (String)tuple[0]; 
    Long count = (Long) tuple[1]; 

    }