如何使用 JpaRepository 从 xml 中的命名本机查询返回 Map 作为结果
Posted
技术标签:
【中文标题】如何使用 JpaRepository 从 xml 中的命名本机查询返回 Map 作为结果【英文标题】:How to return Map as result from named nativ query in xml using JpaRepository 【发布时间】:2017-10-19 13:18:44 【问题描述】:我需要每天查询一些计数,并且我想创建将在地图中返回的命名本机查询。我该怎么做?
<named-native-query name="getLeadNumberByDayInDateRange" result-set-mapping="map">
<query>
SELECT addeddate,
Count(DISTINCT campaignid, email) AS count
FROM leads
GROUP BY addeddate
</query>
</named-native-query>
所以我正在用 xml 编写查询,我想将它添加到 JpaRepository 中:
@Query
public Map<LocalDateTime, Integer> getLeadNumberByDayInDateRange();
【问题讨论】:
【参考方案1】:要使用命名查询来做到这一点,可以执行以下操作:
@Query("SELECT l.addeddate, Count(DISTINCT l.campaignid)
FROM leads l
GROUP BY l.addeddate")
public Map<LocalDateTime, Integer> getLeadNumberByDayInDateRange();
或类似:
@NamedQuery(name = "getLeadNumberByDayInDateRange",
query = "SELECT l.addeddate, Count(DISTINCT l.campaignid)
FROM leads l
GROUP BY l.addeddate")
public Map<LocalDateTime, Integer> getLeadNumberByDayInDateRange();
或者如果你想要一些自定义映射,你可以使用[sql 结果集映射]。1
【讨论】:
当我尝试这个时,我得到: 原因:org.hibernate.hql.internal.ast.QuerySyntaxException: 期待关闭,在第 1 行第 48 列附近找到 ',' [SELECT l. addeddate, Count (DISTINCT l.campaignid,l.email)作为计数来自潜在客户 l GROUP BY l. addeddate]。你能帮我在 xml 中做到这一点吗? 嗯,我需要这 2 个值的唯一组合,所以我必须给它 2 个参数以上是关于如何使用 JpaRepository 从 xml 中的命名本机查询返回 Map 作为结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 jparepository 从 getmapping 返回布尔结果
我应该如何将 JpaRepository.findOne() 与 SpringBoot 一起使用?
如何使用 JpaRepository 和嵌套的对象列表进行搜索?