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 而不是 Map 的列表。我在某处读到 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 回答
0

最简单的方法是使用界面。让 Spring 将查询别名连接到接口 getter。示例可以在这里找到:https : //www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions 还有@SqlResultSetMapping。请参阅: JPA-在非实体类中加入两个表

于 2020-02-17T09:41:17.973 回答