NHibernate HQL子选择左连接?

时间:2011-03-03 15:19:20

标签: nhibernate nhibernate-mapping

我有以下问题,非常感谢您的帮助:

我通过HQL进行了所有过滤,其中一个过滤器是左外连接,必须是子选择。所以我的想法是,我可以创建一个虚拟业务对象,我希望用数据填充(如果可能的话,使用SP)并在我的左连接中使用它。

现在我该怎么做,仍然拥有1个HQL查询中的所有逻辑?

我想对我来说最大的问题是理解如何将这个BO(实际上没有映射到表等)用于查询,其中所有其他BO都映射到表等。

我试图避免在实际的C#代码中进行任何过滤。

谢谢!

示例:

实体A - 映射到表A

实体B - 映射到表B

实体C - 映射到表C

实体D - 未映射到表 - 来自SQL查询或SP

HQL:

来自A pbo

内部联接B.EntityType etype

内部联接C.EntityAddressList eadr

左连接D.Level lvl

1 个答案:

答案 0 :(得分:1)

您无法在HQL中加入任意SQL。所以我不认为你想做的事情是可能的。您可能要么映射D是什么,要么使用Session.CreateSQLQuery()在SQL中编写查询。您仍然可以指定任何返回的实体。请参阅此文章以供参考。 http://www.nhforge.org/doc/nh/en/index.html#d0e10274