2017-10-19 128 views
1

我需要每天查询一些计数,并且我想创建将在地图中返回此数据的命名的本机查询。我怎样才能做到这一点 ?如何使用JpaRepository在xml中以命名nativ查询的形式返回地图

<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(); 

回答

2

要做到这一点与命名的查询可以这样做:

@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 result set mappings]。 1

+0

当我尝试这个我得到:引起:org.hibernate.hql.internal.ast.QuerySyntaxException:期待CLOSE,发现','在第1行第48列[SELECT l.addeddate,Count(DISTINCT l。 campaignid,l.email)为count FROM FROM l GROUP BY l.addeddate]。你能帮我做到这一点在XML? – user3364181

+0

只给出DISTINCT一个参数。那样有用吗? –

+0

以及我需要这些2值的独特组合,所以我必须给它2个参数 – user3364181