我正在修改现有的HQL查询,该查询返回单个列而不是对象图,但现在我没有得到我需要的所有行。
这里有一些关于当前架构的事实:
这是查询:
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
不幸的是,我的查询没有返回父合同没有拥有部门的估算值。相反,我希望相关字段为空。我尝试了左外连接但得到了相同的结果。
非常感谢任何帮助。抱歉,如果我做了些蠢事。
干杯,
詹姆斯
答案 0 :(得分:0)
我发现使用ISQLQuery可以更好地关闭包含左外连接的异常查询,这使您可以访问正确的SQL语法以及一些HQL功能。
除此之外,您不提供通常有用的映射文件
答案 1 :(得分:0)
我想我已经解决了这个问题:d.ParentBusinessStream.Title是一个隐式内连接,但由于d可以为null,因此无法正常工作。我已经更改了我的查询以考虑到这一点