ホームページ  >  記事  >  Java  >  Spring Data JPA GROUP BY クエリでカスタム オブジェクトを返す方法

Spring Data JPA GROUP BY クエリでカスタム オブジェクトを返す方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 14:30:02492ブラウズ

How to Return Custom Objects in Spring Data JPA GROUP BY Queries?

Spring Data JPA GROUP BY クエリで返されるカスタム オブジェクト

Spring Data JPA は、JPQL (Java Persistence) を使用してデータベース操作を実行する便利な方法を提供します。クエリ言語)。 GROUP BY 句を含むカスタム JPQL クエリを使用する場合、組み込み SQL 結果配列の代わりにカスタム オブジェクトを返したい場合があります。

JPQL ソリューション

  1. 単純な Bean クラスを定義します:
<code class="java">public class SurveyAnswerStatistics {
    private String answer;
    private Long count;
    ... // getters and setters
}</code>
  1. リポジトリ メソッドから Bean インスタンスを返します:
<code class="java">@Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

ネイティブ クエリ ソリューション

ネイティブ クエリの場合、Bean クラスの代わりに Spring Data Projection インターフェイスが使用されます:

  1. プロジェクション インターフェイスを定義します:
<code class="java">public interface SurveyAnswerStatistics {
    String getAnswer();
    int getCnt();
    ... // additional getters
}</code>
  1. クエリから投影されたプロパティを返します。
<code class="java">@Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

重要な注意事項

  • Bean クラスへの完全修飾パスを使用してください。
  • new キーワードを使用して Bean コンストラクターを呼び出します。
  • Bean コンストラクターのパラメーターと同じ順序で属性を渡します。
  • クエリが有効な JPA クエリであることを確認してください。
  • ネイティブ クエリを使用する場合、明確なマッピングには SQL AS キーワードを使用します。

以上がSpring Data JPA GROUP BY クエリでカスタム オブジェクトを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。