首頁 > Java > java教程 > 主體

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

Susan Sarandon
發布: 2024-11-02 06:16:02
原創
624 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!