JPA 中的 JPQL 查詢規格為傳回自訂物件提供本機支援。
<code class="java">public class SurveyAnswerStatistics { private String answer; private Long cnt; // Constructor }</code>
定義一個簡單的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>
更新儲存庫方法以傳回自訂bean 的實例:
原生查詢
雖然原生查詢缺乏對new 關鍵字的直接支持,但Spring Data Projection 介面提供了一種替代方案解決方案:
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); }</code>
建立一個具有與所需輸出對應的屬性的投影介面: 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>
更新儲存庫方法以傳回投影屬性:
使用SQL AS 關鍵字將結果欄位無縫映射到投影屬性。
以上是如何從 Spring Data JPA GROUP BY 查詢傳回自訂物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!