Spring Data JPA を使用して複雑なクエリを実行する場合、代わりにカスタム オブジェクトを返す必要があります。デフォルトのエンティティ。このようなシナリオの 1 つは、特定のフィールドごとに結果をグループ化し、各グループの数を取得することです。この記事では、これを実現する 2 つの方法について説明します。1 つは JPQL クエリ用、もう 1 つはネイティブ クエリ用です。
JPQL は、新しいキーワードを使用してカスタム オブジェクトを返すためのネイティブ サポートを提供します。その方法は次のとおりです。
<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>
ネイティブ クエリ新しいキーワードはサポートされていません。代わりに、Spring Data プロジェクション インターフェイスを使用します。
<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>
重要な注意事項:
以上がSpring Data JPA GROUP BY クエリからカスタム オブジェクトを返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。