CrudRepository を拡張するリポジトリを作成しました。このリポジトリには @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);
私が抱えている問題は、これがマップのリストではなく、オブジェクトの ArrayList を返すことです。JPA が Map を返せないことをどこかで読んだことがあるので、結果を List> に詰め込みます。
この問題を回避したり、結果データにすばやくアクセスしたりするための最善の方法がわかりません。キャストを試みましたが、うまくいきませんでした:
for(Object item: items) {
Map<String,Long> castedItem = (HashMap<String,Long>)item;
}