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

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

Susan Sarandon
Susan Sarandon原創
2024-11-01 08:51:30693瀏覽

How to Return a Custom Object from a Spring Data JPA GROUP BY Query?

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

使用Spring Data JPA 執行複雜查詢時,有必要傳回自訂對象,而不是傳回自訂對象,而不是傳回自訂對象定義物件預設實體。其中一個場景涉及按特定欄位對結果進行分組並檢索每組的計數。本文將探討實現此目的的兩種方法:一種用於 JPQL 查詢,另一種用於本機查詢。

JPQL 查詢解決方案

JPQL 提供使用 new 關鍵字傳回自訂物件的本機支援。其實作方式如下:

  1. 定義一個簡單的 Bean 類別來表示所需的資料結構。
  2. 從儲存庫方法傳回此 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();
}

public class SurveyAnswerStatistics {
    private String answer;
    private Long cnt;
    // getters and setters here
}</code>

原生查詢的解決方案

原生查詢不支援new關鍵字。相反,請使用 Spring Data 投影介面:

  1. 定義具有所需屬性的投影介面。
  2. 從查詢傳回投影屬性。
<code class="java">public interface SurveyAnswerStatistics {
    String getAnswer();
    int getCnt();
}

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>

重要提示:

  • 確保 JPQL 查詢的完全限定路徑和 new 關鍵字的使用。
  • 使用 SQL 的 AS 關鍵字來對應結果欄位原生查詢中的投影介面。

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

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