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

Mary-Kate Olsen
リリース: 2024-11-01 14:30:02
オリジナル
422 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!