NHibernateを使用してWebアプリケーションを開発しています。次のSQLクエリのNHibernateクエリを作成する方法を教えてください。
SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position
基本的には自動参加ですが、Nhibernateでこれを書く方法がわかりません。プロパティ名がテーブルの列名と同じであるとしましょう。
NHibernateを使用してWebアプリケーションを開発しています。次のSQLクエリのNHibernateクエリを作成する方法を教えてください。
SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position
基本的には自動参加ですが、Nhibernateでこれを書く方法がわかりません。プロパティ名がテーブルの列名と同じであるとしましょう。
元のエンティティで選択を実行し、2 つのオブジェクトを "lazy = false" に関連付けることができます。エンティティがマップされている限り、両方が返され、オブジェクトにアクセスしようとしたときに遅延読み込み例外が発生することはありません。
「lazy=false」をマッピングしたくない場合は、結果を反復処理して何らかの操作 (null かどうかを尋ねるなど) を実行して、確実にセッションが開いている間にデータがロードされます。
アップデート:
NHibernateUtil.Initialise() には、コレクションをさまよわずにコレクションを初期化できる、実際にはそれよりも優れたものがあると思います。