我有以下问题,非常感谢您的帮助:
我通过HQL进行了所有过滤,其中一个过滤器是左外连接,必须是子选择。所以我的想法是,我可以创建一个虚拟业务对象,我希望用数据填充(如果可能的话,使用SP)并在我的左连接中使用它。
现在我该怎么做,仍然拥有1个HQL查询中的所有逻辑?
我想对我来说最大的问题是理解如何将这个BO(实际上没有映射到表等)用于查询,其中所有其他BO都映射到表等。
我试图避免在实际的C#代码中进行任何过滤。
谢谢!
示例:
实体A - 映射到表A
实体B - 映射到表B
实体C - 映射到表C
实体D - 未映射到表 - 来自SQL查询或SP
来自A pbo
内部联接B.EntityType etype
内部联接C.EntityAddressList eadr
左连接D.Level lvl
答案 0 :(得分:1)
您无法在HQL中加入任意SQL。所以我不认为你想做的事情是可能的。您可能要么映射D是什么,要么使用Session.CreateSQLQuery()在SQL中编写查询。您仍然可以指定任何返回的实体。请参阅此文章以供参考。 http://www.nhforge.org/doc/nh/en/index.html#d0e10274