Pregunta

Estoy modificando una consulta HQL existente que devuelve columnas individuales en lugar de un gráfico de objetos, pero ahora no estoy obteniendo todas las filas que necesito.

Aquí hay algunos datos sobre el esquema actual:

  • Un presupuesto pertenece a un contrato.
  • La propiedad OwningDepartment de un Contrato puede ser nula.
  • La propiedad ParentBusinessStream de un Departamento no puede ser nula

Esta es la consulta:

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

Lamentablemente, mi consulta no devuelve Estimaciones en las que el contrato principal no tiene un departamento propietario. En su lugar quiero que los campos relevantes sean nulos. Intenté una unión externa izquierda pero obtuve los mismos resultados.

Cualquier ayuda sería muy apreciada. Disculpas si he hecho algo estúpido.

Saludos,

James

¿Fue útil?

Solución 2

Creo que lo he resuelto: d.ParentBusinessStream.Title es una unión interna implícita, pero dado que d puede ser nulo, no funciona correctamente. He cambiado mi consulta para tener esto en cuenta

Otros consejos

Descubrí que las consultas inusuales que contienen uniones externas izquierdas están mejor usando una ISQLQuery que te da acceso a la sintaxis SQL adecuada, así como a algunas potencias de HQL.

Además, no proporcionas archivos de mapeo que generalmente son útiles

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top