次のクエリが機能していて、必要な結果が得られます。
int associatedId = 123;
MyObject alias = null;
var subQuery = QueryOver.Of<DatabaseView>()
.Where(view => view.AssociatedId == associatedId)
.And(view => view.ObjectId == alias.ObjectId)
.Select(view => view.ObjectId);
var results = session.QueryOver<MyObject>(() => alias)
.WithSubquery.WhereExists(subQuery)
.List();
はDatabaseView
実際のNHibernateエンティティとしてマッピングされています(したがって、で使用できます)が、HBMマッピングでQueryOver
は関連付けられていません。MyObject
このクエリは、IList<MyObject>
を使用してを返しますSELECT ... FROM MyObject WHERE EXISTS (subquery for DatabaseView here)
。これを書き直して同じデータを返すが、サブクエリの代わりにJOINを使用するにはどうすればよいですか?