取得Spring Data JPA GROUP BY クエリからのカスタム オブジェクトとしてのデータにより、データのプレゼンテーションが強化され、その後の処理が簡素化されます。このガイドでは、これを実現する方法を検討し、JPQL クエリとネイティブ クエリの両方のソリューションを紹介します。
JPA 仕様内の JPQL クエリはネイティブ クエリを提供します。カスタム オブジェクトを返すためのサポート。
目的の出力構造を表す単純な Bean クラスを定義します。
public class SurveyAnswerStatistics {
private String answer;
private Long cnt;
// Constructor
}
カスタム Bean のインスタンスを返すようにリポジトリ メソッドを更新します。
public interface SurveyRepository extends CrudRepository {
@Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
List findSurveyCount();
}
ネイティブ クエリには新しいキーワードの直接サポートがありませんが、Spring Data Projection インターフェイスは代替ソリューションを提供します。
目的のプロパティに対応する投影インターフェイスを作成します。出力:
public interface SurveyAnswerStatistics {
String getAnswer();
int getCnt();
}
投影されたプロパティを返すようにリポジトリ メソッドを更新します:
public interface SurveyRepository extends CrudRepository {
@Query(nativeQuery = true, value =
"SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
List findSurveyCount();
}
SQL AS キーワードを使用して、結果フィールドを射影プロパティにシームレスにマッピングします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3