java PSQL/JPA:将查询从返回的事件列表<>重写为映射<日期,每个日期的事件列表<>>
我有一个预定义的查询/jpa操作
jpaOperations.findByQuery(ActivityCountByCategory.class,
"SELECT NEW ActivityCountByCategory(u.text, count(1))
FROM Activity a JOIN a.groupCategories c, UserDefinedCode u
WHERE (u.id.code = c AND u.id.entityName='AKTOR_AKTIVITET' AND u.id.fieldName='KATEGORI')
AND a.closedIndicator = 'F' GROUP BY u.text, u.lineNo ORDER BY u.lineNo");
它返回一个名为ActivityCountByCategory
的DTO列表,其中包含一个活动的名称和一个表示数据库中发生的事件的数字。
因此,该方法返回所有时间的单个活动数
UserDefinedCode
这些表的定义使得这些活动位于AKTOR_AKTIVITET
中,并且有一个从第二个表UserDefinedCode
引用的ID,这样名称部分就与活动分离了
我需要扩展这个查询,这样我就可以从Date和Date-to-Date传递一个日期,并让它返回某种形式的List<Object[]>
或Map<Date, List<ActivityCountByCategory>>
,这样就不用一次返回所有事件,而是可以将事件拆分为单独的日期between fromDate and toDate
,并将每个返回列表映射到一个特定的日期
# 1 楼答案
我用原生SQL重写了查询,并编辑了DTO以说明日期,然后在支持bean java代码中进行了一些解析: