我想为hibernate编写一个原生查询,它将对事件id的所有记录进行分组,并返回一个映射(groupByColumn -> entity)。
如Map<Integer, List<StaffingTbl>>,其中key是我使用Group By子句的列,而value是已分组实体的列表。
我正在尝试这样的东西,它不起作用
SELECT new Map(e.id, s) FROM staffing_tbl s
INNER JOIN user_tbl u on u.id = s.userId
INNER JOIN event_tbl e on u.eventId = e.id
WHERE e.id IN (:ids)
GROUP BY e.id 发布于 2021-04-01 19:23:54
您不能在编写原生查询的同时使用HQL特性new map。您必须自己进行分组,但使用Java8Stream API应该会很容易。如下所示:
session.createNativeQuery("...", Object[].class)
.addScalar("id")
.addEntity(StaffingTbl.class)
.getResultList()
.stream()
.collect(Collectors.groupingBy(
array -> (Integer) array[0],
Collectors.mapping((StaffingTbl) array[1], Collectors.toList())
))https://stackoverflow.com/questions/66882743
复制相似问题