我已经创建了一个扩展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不能返回映射,这就是为什么我将结果填充到List>中的原因。
我不知道解决此问题或快速访问结果数据的最佳方法是什么。我试过选角,但也没成功:
for(Object item: items) {
Map<String,Long> castedItem = (HashMap<String,Long>)item;
}发布于 2012-04-16 16:21:18
在Hibernate的官方文档中查看此示例。Here
for (Object item:items) {
Object[] tuple = (Object[]) item;
String itemType = (String)tuple[0];
Long count = (Long) tuple[1];
}发布于 2020-02-17 17:41:18
最简单的方法是使用接口。让Spring wire向接口getter查询别名。示例可以在这里找到:https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions还有@SqlResultSetMapping。请参阅:JPA- Joining two tables in non-entity class
https://stackoverflow.com/questions/10170299
复制相似问题