」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從 Spring Data JPA GROUP BY 查詢傳回自訂物件?

如何從 Spring Data JPA GROUP BY 查詢傳回自訂物件?

發佈於2024-12-22
瀏覽:825

How to Return Custom Objects from Spring Data JPA GROUP BY Queries?

Spring Data JPA GROUP BY 查詢中的自訂物件回傳

簡介


檢索將資料作為來自Spring Data JPA GROUP BY 查詢的自訂物件增強了資料表示並簡化了進一步處理。本指南探討如何實現這一目標,並展示了 JPQL 和本機查詢的解決方案。

JPQL 查詢


JPA 規範中的 JPQL 查詢提供本機查詢支援傳回自訂物件。

第1 步:建立自訂Bean


定義一個簡單的Bean表示所需輸出結構的類別:

public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}

第2 步:傳回Bean 實例


更新儲存庫方法以傳回自訂Bean 的實例:

public interface SurveyRepository extends CrudRepository {
    @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

原生查詢


雖然原生查詢缺乏對new 關鍵字的直接支持,但Spring Data Projection 介面提供了替代解決方案:

第 1步:定義投影接口


建立一個投影接口,其屬性與所需的屬性相對應輸出:

public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}

第2 步:傳回投影屬性


更新儲存庫方法以傳回投影屬性:

public interface SurveyRepository extends CrudRepository {
    @Query(nativeQuery = true, value =
            "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

使用 SQL AS 關鍵字將結果欄位無縫地對應到投影屬性。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3