结合QueryOver和CreateQuery子查询

时间:2015-01-26 14:37:39

标签: nhibernate hql nhibernate-criteria queryover

我正在使用QueryOver<>使用连接执行一系列子查询。这是一些伪造的代码,解释了我在做什么:

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(又称交叉)连接,因为未映射的关系(不幸的是我不能改变它)。

有没有办法可以使用CreateQuery()(或CreateCriteria()假设我可以进行theta连接)来定义子查询并使用QueryOver&lt;&gt;()指定顶级查询?

1 个答案:

答案 0 :(得分:0)

不,HQL查询和QueryOver / Criteria查询无法合并。

您可以在QueryOver / Criteria中使用纯SQL。