Domanda

Sto modificando una query HQL esistente che restituisce singole colonne anziché un grafico a oggetti, ma ora non riesco a ottenere tutte le righe di cui ho bisogno.

Ecco alcuni fatti sullo schema attuale:

  • Un preventivo appartiene a un contratto.
  • La proprietà OwningDepartment di un contratto può essere nulla.
  • La proprietà ParentBusinessStream di un dipartimento non può essere nulla

Questa è la query:

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

Sfortunatamente la mia query non sta restituendo stime in cui il contratto principale non ha un reparto proprietario. Voglio invece che i campi pertinenti siano nulli. Ho provato un join esterno sinistro ma ho ottenuto gli stessi risultati.

Qualsiasi aiuto sarebbe molto apprezzato. Mi scuso se ho fatto qualcosa di stupido.

Saluti,

James

È stato utile?

Soluzione 2

Penso di averlo capito: d.ParentBusinessStream.Title è un join interno implicito ma poiché d può essere nullo non funziona correttamente. Ho modificato la mia richiesta per tenerne conto

Altri suggerimenti

Ho scoperto che le query insolite contenenti i join esterni a sinistra sono migliori usando un ISQLQuery che ti dà accesso alla sintassi SQL corretta e ad un po 'di potenza HQL.

Oltre a ciò, non fornisci file di mappatura che di solito sono utili

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top