2017-10-19 127 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