NHibernate HQL加入不返回所有必需的行

时间:2009-10-23 09:20:12

标签: nhibernate hql

我正在修改现有的HQL查询,该查询返回单个列而不是对象图,但现在我没有得到我需要的所有行。

这里有一些关于当前架构的事实:

  • 估算属于合同。
  • 合同的OwningDepartment属性可以为null。
  • 部门的ParentBusinessStream属性不能为空

这是查询:

select e.ID, e.StatusCode.ID, e.InputDate, e.ParentClient.Name, e.ParentContractLocation.ParentLocation.Description, e.Description, e.InternalRef, e.ExternalRef, e.TotalIncTax, e.TaxTotal, e.Closed, e.ViewedByClient, e.HelpdeskRef, e.ParentContract.Reference, d.ParentBusinessStream.Title, d.Name
from Estimate e, Department d where (e.ParentContract.ID in (select cs.ParentContract.ID from ContractStaff cs
where cs.ParentStaff.ID=:staffID)) and ((d.ID = e.ParentContract.OwningDepartment.ID) OR (d.ID is null)) order by e.ID

不幸的是,我的查询没有返回父合同没有拥有部门的估算值。相反,我希望相关字段为空。我尝试了左外连接但得到了相同的结果。

非常感谢任何帮助。抱歉,如果我做了些蠢事。

干杯,

詹姆斯

2 个答案:

答案 0 :(得分:0)

我发现使用ISQLQuery可以更好地关闭包含左外连接的异常查询,这使您可以访问正确的SQL语法以及一些HQL功能。

除此之外,您不提供通常有用的映射文件

答案 1 :(得分:0)

我想我已经解决了这个问题:d.ParentBusinessStream.Title是一个隐式内连接,但由于d可以为null,因此无法正常工作。我已经更改了我的查询以考虑到这一点