10

1 つの列で 2 つのテーブルを内部結合しようとしています。DB側からは、議論したくないのでマッピングはありません。

INNER JOIN を使用して HQL クエリを実行し、ROLE オブジェクト/結果を取得したいと考えています。

これが私のhqlです

session.createQuery("from ROLE as role INNER JOIN INVOLVEMENT as関与 ON role.id =関与.roleid WHERE関与.id = X").list();

ON は HQL では使用できないようです。この列のみで JOIN するように Hibernate に明示的に指示するにはどうすればよいですか。

私も1つ下に試してみました

ロールとして ROLE から roleSpec を選択し、involvement を関与として選択します。

しかし、ROLE が例外でマップされていません。

4

1 に答える 1

17

ROLEが実際にマップされたエンティティであることを確認してください。さらに、「ON」を実行する必要はありません。hibernateは結合列が何であるかを知っています(JPAでこれを定義する方法を知っています)。したがって、ステートメントで指定する必要はありません。そのはず -

session.createQuery("from Role as role INNER JOIN Involvement as involvement WHERE involvement.id = X").list();

RoleクラスがROLEテーブルにマップされ、InvolvementクラスがInvolementテーブルにマップされていると仮定します。
誤ってテーブル名を使用した可能性があります。これが、「マップされていません」というエラーが発生する理由です。
前回HQL(JPA-QLではなく)を作成したときは、次のリンクを参照として使用しました。これにより、必要なすべての情報が提供されます。

于 2012-11-16T07:54:24.253 に答える