0

親子または多対多の関係によって相互に関連付けられていない 2 つのテーブル間で左結合を実行することは可能ですか? 私が見つけたすべてのサンプルは、それらのシナリオのみを示しています。

次のテーブルがあります。

同期 -> Id (文字列) -> EntityId (文字列) -> OtherInfo

顧客 -> ID -> その他の情報

プロジェクト -> ID -> その他の情報

Sync は、残りのテーブルに関するメタデータを格納するための汎用テーブルです。EntityId は、これらのテーブルのフィールド "Id" を表します (同期と残りのテーブルの間に物理的な外部キーは作成されません)。

私は基本的にSQLで次のクエリを実行したいのですが、

を選択します。、e。 sync s から s.entityid = e.id / でエンティティ e に参加

(上記の SQL のエンティティは、実際のテーブル、顧客、プロジェクト、または同期テーブル内のデータを含むその他のテーブルに置き換える必要があります)。

そのクエリを HQL でどのように表現すべきかについて、誰か助けやガイダンスを教えてもらえますか?

ありがとうパブロ。

4

2 に答える 2

3

私の知る限り、これを直接行うことはできません。HQL はオブジェクト指向であり、マッピングされたエンティティと関係のみを認識します。これを機能させるには、SQL クエリの結果から NHibernate にエンティティの結果を作成させるためにa を実行し、session.CreateSQLQueryを使用することができます。.AddEntity

于 2009-05-04T15:48:49.480 に答える
1

これは私が知っている左結合ではありませんが、いくつかの指針が得られるかもしれません:

http://jaychapman.blogspot.com/2007/10/nhibernate-non-mapped-joins.html

NH でマップされていない左結合があることは長年の問題であり、回避策には注意点があることに注意してください。こちらの問題と最初のコメントのペアをご覧ください: https://nhibernate.jira.com/browse/NH-514

于 2009-05-04T19:58:23.997 に答える