Je modifie une requête HQL existante qui renvoie des colonnes individuelles plutôt qu'un graphique d'objet mais maintenant je ne reçois pas toutes les lignes dont j'ai besoin.NHibernate HQL Join Ne retournant pas toutes les lignes requises
Voici quelques faits sur le schéma actuel:
- Une estimation fait partie d'un contrat.
- La propriété OwningDepartment d'un contrat peut être nulle.
- La propriété ParentBusinessStream d'un département ne peut pas être nul
Ceci est la requête:
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
Malheureusement ma requête ne renvoie pas les estimations pour lesquelles le contrat mère ne dispose pas d'un service propriétaire. Au lieu de cela, je veux que les champs pertinents soient juste nuls. J'ai essayé une jointure externe gauche mais j'ai obtenu les mêmes résultats.
Toute aide serait grandement appréciée. Toutes mes excuses si j'ai fait quelque chose de stupide.
Cheers,
James
Salut, Merci pour la réponse. Malheureusement, l'idée d'utiliser une requête SQL ne me plaît pas pour les raisons suivantes: - Notre client ne veut pas nécessairement s'en tenir à un certain type de base de données et peut en changer à l'avenir. - La requête HQL que j'ai publiée est plutôt méchante. Pour répliquer cela en SQL ajouterait le rendre encore plus complexe puisque la jointure interne devrait être faite manuellement. Je ne peux pas poster les mappings pertinents avant la semaine prochaine puisque j'ai une semaine de congé. Cheers, James – James