web-dev-qa-db-ja.com

HQLで関連付けなしで参加する

次のような2つのテーブル(A、B)があるとします。

A {id, a, c}
B {id, b, c}

私にも彼らの実体があります。結果セットが次のようになるようにHQLを書きたい(A.c = B.c):

(a1, b1, c1)
(a2, b2, c2)
(a3, b3, c3)
...

on句はhibernateではサポートされていないため、行き詰まり、クエリの記述方法がわかりません。

38
nimcap

クロス結合表記を使用する必要があります。

from A as table_a , B as table_b
where table_a.c = table_b.c

もちろん、この方法で外部結合を実装する方法はありません。その場合、問題が発生する可能性があります。

条件付きの類似のケースについては、以下を参照してください。 hibernate-criteria-joining-table-without-a-mapped-association

49
Il-Bhima

外部結合を作成したい場合は、サブクエリを作成し、OR操作(これは私にとっては機能します)を管理できます。これにより、クエリがより複雑で最悪のパフォーマンスになりますが、機能します:-)

2
user2291385

両方のテーブルが外部キーを介して互いに関連している場合は、これを試すことができます:

みましょう:

A {id(主キー)、a、c} B {id(外部キー)、b、c}

この方法でクエリを記述できるように、Bクラスのpojo.afterでセッターおよびゲッターを使用して、parent(A)型の変数を定義します。 「AA」にしましょう

select tbl_b.a,tbl_a.a,tbl_b.b,tbl_a.b,tbl_b.c,tbl_a.c from B tbl_b inner join tbl_b.AA tbl_b
0
Noman Akhtar