[英]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.