[解決済み] Spring Data JPAでネイティブクエリ結果をNon-Entity POJOにマップする。
2022-07-16 02:50:11
質問
Spring Dataのリポジトリメソッドにネイティブクエリを実装しています。
@Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true)
GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
で、その結果をNon-Entity POJOにマッピングしたいと思います。
GroupDetails
.
それは可能ですか?もし可能なら、例を提示してくださいませんか?
どのように解決するのですか?
oridの答えのようにGroupDetailsと仮定すると、JPA 2.1を試してみました。 コンストラクタの結果 ?
@SqlResultSetMapping(
name="groupDetailsMapping",
classes={
@ConstructorResult(
targetClass=GroupDetails.class,
columns={
@ColumnResult(name="GROUP_ID"),
@ColumnResult(name="USER_ID")
}
)
}
)
@NamedNativeQuery(name="getGroupDetails", query="SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", resultSetMapping="groupDetailsMapping")
で、リポジトリのインターフェイスには以下を使用します。
GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
Spring Data JPAによると
ドキュメント
によると、springはまずメソッド名にマッチする名前のクエリを探そうとします。
@NamedNativeQuery
,
@SqlResultSetMapping
と
@ConstructorResult
であれば、その挙動を実現できるはずです。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
[解決済み] JPA : ネイティブクエリ結果セットをPOJOクラスコレクションに変換する方法
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring Dataです。"delete by "はサポートされていますか?
-
[解決済み] Spring Boot JPA - 自動再接続の設定
-
[解決済み] Spring CrudRepositoryで大文字小文字を区別しないクエリ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン