2009-10-23 6 views
2

개체 그래프가 아닌 개별 열을 반환하지만 현재 필요한 모든 행을 가져 오지 못하는 기존 HQL 쿼리를 수정합니다. 현재 스키마에 대한NHibernate HQL Join이 필요한 모든 행을 반환하지 않음

여기에 몇 가지 사실 : 견적이 계약에 속하는

  • .
  • Contract의 OwningDepartment 속성은 null 일 수 있습니다.
  • 학과의 ParentBusinessStream 속성이 쿼리입니다

null 일 수 없습니다 : 부모 계약이 소유하는 부서가없는

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 

불행하게도 내 쿼리가 반환하지 않습니다 추정하고있다. 대신 관련 필드를 null로 지정합니다. 왼쪽 외부 조인을 시도했지만 같은 결과가 나타납니다.

도움이 될 것입니다. 내가 바보 같은 짓을 한 경우 사과드립니다.

건배,

제임스는

답변

0

가 내가 그것을 밖으로 일한 생각 도움이됩니다 매핑 파일을 제공하지 않는 게다가

는 : d.ParentBusinessStream.Title는 암시 적 내부 조인하지만 d는 null이 될 수 있기 때문에 그렇지 않은 것입니다 올바르게 작동합니다. 이를 고려하여 쿼리를 변경했습니다.

0

내가 왼쪽 바깥을 포함하는 특별한 쿼리는 적절한 SQL 구문뿐만 아니라 일부 HQL 전원에 대한 액세스를주는 ISQLQuery를 사용하여 더 낫다 조인 것으로 나타났습니다. 당신은 일반적으로

+0

안녕하십니까, 답장을 보내 주셔서 감사합니다. 불행히도 나는 다음과 같은 이유로 SQL 쿼리를 사용하는 아이디어에 열중하지 않습니다. - 우리 클라이언트가 특정 유형의 데이터베이스를 고집하지 않고 다른 데이터베이스로 이동할 수 있습니다. - 내가 게시 한 HQL 쿼리는 그대로 심술 궂습니다. SQL에서 그것을 복제하려면 내부 조인을 수동으로 수행해야하기 때문에 더 복잡하게 만듭니다. 일주일이 지난 이후로 다음 주까지 관련 매핑을 게시 할 수 없습니다. 건배, 제임스 – James

관련 문제