NHibernate HQL beitreten Rückkehr nicht alle erforderlichen Zeilen
-
06-07-2019 - |
Frage
Ich bin Änderung einer bestehenden HQL-Abfrage, die eher einzelne Spalten zurückgibt als ein Objektgraph aber jetzt bin ich nicht alle Zeilen bekommen, die ich brauche.
Hier ein paar Fakten über das aktuelle Schema:
- Eine Schätzung gehört zu einem Vertrag.
- Die OwningDepartment Eigenschaft eines Vertrages kann null sein.
- Die ParentBusinessStream Eigenschaft einer Abteilung kann nicht null sein
Dies ist die Abfrage:
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
Leider meine Abfrage Rückkehr nicht Schätzungen, wenn die Mutter Vertrag keine besitzende Abteilung. Stattdessen möchte ich die entsprechenden Felder nur null sein. Ich habe versucht, eine linke äußere Verknüpfung bekam aber die gleichen Ergebnisse.
Jede Hilfe wäre sehr geschätzt. Entschuldigt, wenn ich etwas Dummes getan haben.
Cheers,
James
Lösung 2
Ich glaube, ich es ausgearbeitet haben: d.ParentBusinessStream.Title ist eine implizite innere Verknüpfung aber da d null sein kann, es funktioniert nicht richtig. Ich habe meine Abfrage zu berücksichtigen dies geändert
Andere Tipps
Ich habe festgestellt, dass ungewöhnliche Anfragen linken Außen enthalten, sind besser dran, schließt sich durch einen ISQLQuery mit dem Sie sowie einige HQL Macht den Zugriff auf die richtige SQL-Syntax gibt.
Abgesehen davon, Sie bieten keine Mapping-Dateien, die in der Regel hilfreich sind