首頁 >Java >java教程 >如何從 Spring Data JPA GROUP BY 查詢傳回自訂物件?

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

Susan Sarandon
Susan Sarandon原創
2024-11-02 06:16:02714瀏覽

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 查詢規格為傳回自訂物件提供本機支援。

<code class="java">public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}</code>

第1 步:建立自訂Bean


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

<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> {
    @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
    List<SurveyAnswerStatistics> findSurveyCount();
}</code>

第2 步:傳回Bean 實例


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


原生查詢

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

<code class="java">public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}</code>

第1 步:定義投影介面


建立一個具有與所需輸出對應的屬性的投影介面: p>

<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> {
    @Query(nativeQuery = true, value =
            "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
    List<SurveyAnswerStatistics> findSurveyCount();
}</code>

步驟2:傳回投影屬性

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

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

以上是如何從 Spring Data JPA GROUP BY 查詢傳回自訂物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn