Spring Data JPA は、JPQL クエリを実行し、結果を次のように取得するメカニズムを提供します。カスタム オブジェクト。
ステップ 1: Bean クラスを定義する
目的のオブジェクト構造を表す単純な Bean クラスを作成します。
<code class="java">public class SurveyAnswerStatistics { private String answer; private Long count; // Constructor for object instantiation }</code>
ステップ 2: リポジトリ メソッドで 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>
ネイティブ クエリを使用する場合、JPA 固有の構文はサポートされません。代わりに、
ステップ 1: 投影インターフェイスを作成する
必要なオブジェクトのプロパティを指定する投影インターフェイスを定義します:
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); }</code>
ステップ 2: クエリ内の結果フィールドをマップする
クエリ内で SQL AS キーワードを使用して、結果フィールドを射影プロパティにマップします:
<code class="java">@Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
以上がSpring Data JPA のグループ化されたクエリ結果からカスタム オブジェクトを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。