6

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;
}
4

2 に答える 2

4

Hibernate の公式ドキュメントでこの例を参照してください。ここ

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

  }
于 2012-04-16T08:21:17.837 に答える