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

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

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

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 關鍵字將結果欄位無縫地對應到投影屬性。

最新教學 更多>
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-23
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內...
    程式設計 發佈於2024-12-23
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-23
  • Go可以存取初始標準輸入流嗎?
    Go可以存取初始標準輸入流嗎?
    在 Go 中,您可以存取初始標準輸入嗎? 在 Go 中,使用 os.Stdin 從原始標準輸入讀取應該會產生所需的結果,如圖所示通過這個代碼片段:package main import "os" import "log" import "io&quo...
    程式設計 發佈於2024-12-23
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-12-23
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-12-23
  • 極簡密碼管理器桌面應用程式:進軍 Golang 的 Wails 框架(第 2 部分)
    極簡密碼管理器桌面應用程式:進軍 Golang 的 Wails 框架(第 2 部分)
    Hi again, coders! In the first part of this short series we saw the creation and operation of a desktop application to store and encrypt our passwords...
    程式設計 發佈於2024-12-23
  • ES6 React 元件:何時使用基於類別與函數式?
    ES6 React 元件:何時使用基於類別與函數式?
    在ES6 基於類別和函數式ES6 React 元件之間做出選擇使用React 時,開發人員面臨著使用ES6 基於類別的選擇組件或功能ES6 組件。了解每種類型的適當用例對於最佳應用程式開發至關重要。 函數式 ES6 元件:無狀態且簡單函數式元件是無狀態的,這表示它們不維護任何內部狀態。他們只是接收道...
    程式設計 發佈於2024-12-23
  • 如何在 PHP 中找到兩個平面數組之間的唯一值?
    如何在 PHP 中找到兩個平面數組之間的唯一值?
    在平面數組之間查找唯一值給定兩個數組,任務是確定僅存在於其中一個數組中的值。此操作通常稱為尋找兩個集合之間的差異。 在 PHP 中,您可以利用 array_merge、array_diff 和 array_diff 函數來實現此操作。詳細解法如下:$array1 = [64, 98, 112, 92...
    程式設計 發佈於2024-12-23
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-23
  • CSS 可以在內聯區塊元素中本機插入換行符號嗎?
    CSS 可以在內聯區塊元素中本機插入換行符號嗎?
    CSS 在行內區塊元素中插入換行符:理論探索在不斷發展的Web 開發領域,這種能力操縱內容流仍然是最重要的。經常出現的一個特殊挑戰涉及在內聯區塊元素中插入換行符。 考慮以下 HTML 結構:<h3 id="features">Features</h3> &...
    程式設計 發佈於2024-12-23
  • 如何在 PHP 中輕鬆轉換時區之間的時間和日期?
    如何在 PHP 中輕鬆轉換時區之間的時間和日期?
    在PHP 中轉換時區之間的時間和日期使用PHP,您可以輕鬆地在不同時區之間轉換時間和日期。此功能在處理全球資料的應用程式或與來自不同位置的使用者一起工作時特別有用。 取得時區偏移量要取得與 GMT 的時間偏移量,您可以使用 DateTimeZone 類別。它提供了時區及其各自偏移量的完整清單。 $t...
    程式設計 發佈於2024-12-23
  • HTML 格式標籤
    HTML 格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2024-12-23
  • 如何在Windows上安裝並使用Pip進行Python套件管理?
    如何在Windows上安裝並使用Pip進行Python套件管理?
    Pip:在Windows 上安裝Python 套件的輕鬆方式在Windows 上安裝Python 套件可能是一項艱鉅的任務,特別是如果您在使用EasyInstall 時遇到困難。幸運的是,EasyInstall 的後繼者 Pip 提供了更簡化和簡化的解決方案。 在Windows 上逐步安裝Pip若要...
    程式設計 發佈於2024-12-23
  • 如何在Python的`type()`和`isinstance()`之間進行選擇以進行物件類型檢查?
    如何在Python的`type()`和`isinstance()`之間進行選擇以進行物件類型檢查?
    如何確定物件的類型確定物件的類型對於保證資料一致性並相應地執行操作至關重要。 Python 為此目的提供了兩個內建函數:type() 和 isinstance()。 使用 type()type() 函數傳回確切的型別一個物件的。例如:>>> type([]) is list Tru...
    程式設計 發佈於2024-12-23

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

Copyright© 2022 湘ICP备2022001581号-3