spring-data @Query映射结果问题

时间:2012-04-16 07:40:25

标签: java spring spring-data

我创建了一个扩展CrudRepository的Repository, 此存储库有一个带有@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);

我遇到的问题是返回Object的ArrayList而不是Map的List。 我已经读过JPA无法返回Map的地方,这就是我将结果填入List&gt;的原因。

我不知道解决此问题或快速访问结果数据的最佳方法是什么。 我已经尝试过投射,但这也没有成功:

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

2 个答案:

答案 0 :(得分:4)

在Hibernate的官方文档中查看此示例。Here

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

  }

答案 1 :(得分:0)

最简单的方法是使用界面。让Spring Wire查询别名 到接口吸气剂。可以在此处找到示例:https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions 也有@SqlResultSetMapping。看到: JPA- Joining two tables in non-entity class