Я использую QueryOver <> для выполнения ряда подзапросов с использованием конъюнкции. Вот некоторые псевдо-код, который объясняет, что я делаю:Объединение QueryOver и подзапроса CreateQuery
Conjunction conj = new Conjunction();
conj.Add(Subqueries.WhereProperty<Customer>(...).In(QueryOver.Of<Foo>().Where(...));
conj.Add(Subqueries.WhereProperty<Customer>(...).In(QueryOver.Of<Bar>().Where(...));
var result = session.QueryOver<Customer>()
.Where(conj)
.List();
Это прекрасно работает, но я наткнулся на сценарий, когда мне нужно использовать HQL (CreateQuery()) для одного из моих подзапросов. Причина, по которой мне нужно использовать HQL, - это то, что мне нужно соединение theta (aka cross) из-за неотображаемых отношений (к сожалению, я не могу это изменить).
Есть ли способ, которым я могу использовать CreateQuery() (или CreateCriteria() при условии, что я могу делать тета-соединения), чтобы определить подзапросы и указать запрос верхнего уровня с помощью QueryOver <>()?