繁体   English   中英

spring-data @Query 映射结果问题

[英]spring-data @Query mapping result issue

我创建了一个扩展 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;
}

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

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

  }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM