プログラミング Java

【JPA】リレーションの無いエンティティをJPQLで結合する

投稿日:

概要

@ManyToOneや@OneToManyといったリレーションをエンティティに設定していないまたは設定できない状況にあるが、結合した結果を取得したいという状況を想定しています。

方法としては「JOIN ON」を使います。
NativeQueryとはほんの若干だけ記述が違いがあります。
 

実装

 

エンティティ

ItemとCategoryがあるとします。
ItemにCategoryIdを持ちますがリレーションはありません。

 

レポジトリ

JPQLとnativeQueryの例を同時に記載しています。

■JPQLがNativeQueryと異なる箇所
・クエリ上のテーブル名はEntityアノテーションのname属性に一致する必要があります。
・SELECT句には取得対象のエンティティを指定しますが、その際に「.*など」でカラムの指定は不要です。

 

まとめ

  • JPQLにおいてもJOIN ON句の構文はNativeQueryと同じ。
  • テーブル名はエンティティのname属性と一致させる。
  • フィールドの指定は不要。

参考

【JPA徹底入門】JPQLによる検索処理 – JOIN ON

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

プログラミングスキルを向上させる3ステップ

プログラミングスキルを向上させるための3ステップです。 私自身が実践していることであり、向上を実感している方法です。 写経 本をベースに写経します。 写し書きをして動いたらOKではなく、以下のような問 …

ぴったり

【Java初心者向け】自分のレベルに合った入門書の探し方

Javaを勉強しようとし始めた今、まずは適切な教材を見つけるのが最初の一歩になります。 この記事ではあなたに自分のレベルにあった入門書の探し方を教えたいと思います。 自分のレベルを把握する Javaを …

elseを使わないことでパフォーマンスが下がる場合の対処法

  状況 前回記事(なぜelse、else ifを書かないようにすべきなのか?)のような ifのみで判定されており、それがfor文等の繰り返し処理の中にある場合は パフォーマンスが下がる。 …

【Java】Doubleとdoubleの違いは何か?

結論 Double:オブジェクト型 double:プリミティブ型 「Doubleはdoubleをラップしたオブジェクトである」ということです。 (・ω・´。)ん?つまりどういうこと? こゆこと。  ↓ …

【Java】モジュールシステムの概要と実装例

概要 Javaのモジュールシステムについて、概念的なイメージと実際のコード例で理解を深めるための記事です。 読者はJava Silverの資格勉強中の方やJava入門者を想定しています。 内容は以下の …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。