簡體   English   中英

spring data JPA:如何執行聚合函數

[英]spring data JPA: How to execute aggregate functions

我正在使用 Spring Data JPA,我有一個要求,我需要執行 SQL 查詢,如下所示:

select key_1, sum(key_2), sum(key_3) from table_1 
where key_1 in ('1', '2') and {dynamic_columns} group by key_1;

對於動態列,我使用的是 Spring Data JPA 規范,但我不確定如何在多列上編寫 sum() 等聚合函數。

使用 Spring Data JPA,您在 spring 存儲庫中有幾個選項。

參考資料: Baeldung - Spring 數據 JPA Spring.io - Spring 數據 JPA

指定本機查詢

@Query(value="select key_1, sum(key_2) ...", nativeQuery=true)
Optional<Object[]> getAggregates;

使用提供者(HQL 用於休眠等查詢語言)

@Query(value="select e.key_1, sum(e.key_2) from entity e ...")
Optional<Object[]> getAggregates;

您將在此處使用對象,因為您不會返回正在添加自定義(聚合)列的特定實體。 如果您使用 JPA 存儲庫返回特定實體,則可以返回該實體而不是 Object[]。 對象數組中的每一項都對應一列數據,如果這里有多行,則可以使用:

Optional<List<Object[]>> getAggregates;

最后,如果您之前沒有使用過可選項,您將通過以下方式獲取對象數組:

if(objectsOptional.isPresent()) {
    Objects[] objects = objectsOptional.get();
    ...
}

如果這不是您要查找的內容,我將需要更多信息來幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM