NHibernate HQL Join لا يعيد جميع الصفوف المطلوبة

StackOverflow https://stackoverflow.com/questions/1612300

  •  06-07-2019
  •  | 
  •  

سؤال

أقوم بتعديل استعلام HQL موجود والذي يُرجع أعمدة فردية بدلاً من رسم بياني للكائن ولكن الآن لا أحصل على جميع الصفوف التي أحتاجها.

فيما يلي بعض الحقائق حول المخطط الحالي:

  • التقدير ينتمي إلى العقد.
  • يمكن أن تكون الخاصية OwneringDepartment الخاصة بالعقد فارغة.
  • لا يمكن أن تكون خاصية ParentBusinessStream الخاصة بالقسم فارغة

هذا هو الاستعلام:

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

لسوء الحظ، لا يُرجع استعلامي التقديرات حيث لا يحتوي العقد الأصلي على قسم مالك.بدلاً من ذلك، أريد أن تكون الحقول ذات الصلة فارغة.لقد حاولت الانضمام الخارجي الأيسر ولكن حصلت على نفس النتائج.

أي مساعدة سيكون موضع تقدير كبير جدا.أعتذر إذا كنت قد فعلت شيئا غبيا.

هتافات،

جوامع

هل كانت مفيدة؟

المحلول 2

أعتقد أنني قد عملت على حلها:d.ParentBusinessStream.Title عبارة عن صلة داخلية ضمنية، ولكن بما أن d يمكن أن تكون فارغة، فإنها لا تعمل بشكل صحيح.لقد قمت بتغيير الاستعلام الخاص بي لأخذ ذلك في الاعتبار

نصائح أخرى

لقد وجدت أن الاستعلامات غير المعتادة التي تحتوي على صلات خارجية يسرى تكون أفضل حالًا باستخدام ISQLQuery الذي يتيح لك الوصول إلى بناء جملة SQL المناسب بالإضافة إلى بعض قوة HQL.

بالإضافة إلى ذلك، لا تقدم ملفات التعيين التي عادة ما تكون مفيدة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top