質問

オブジェクトグラフではなく個々の列を返す既存のHQLクエリを変更していますが、必要なすべての行を取得できません。

現在のスキーマに関するいくつかの事実:

  • 見積もりは契約に属します。
  • 契約のOwningDepartmentプロパティはnullにできます。
  • 部門のParentBusinessStreamプロパティをnullにすることはできません

これはクエリです:

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

残念ながら、親契約に所有部門がない場合、私のクエリは見積もりを返しません。代わりに、関連するフィールドをnullにするだけです。左外部結合を試しましたが、同じ結果が得られました。

ご協力いただければ幸いです。バカなことをしてしまったらおApびします。

乾杯、

ジェームズ

役に立ちましたか?

解決 2

私はそれを解決したと思います:d.ParentBusinessStream.Titleは暗黙的な内部結合ですが、dがnullになる可能性があるため、正しく機能しません。これを考慮に入れるためにクエリを変更しました

他のヒント

左外部結合を含む異常なクエリは、適切なSQL構文とHQLのパワーにアクセスできるISQLQueryを使用することで改善されることがわかりました。

それ以外に、通常役立つマッピングファイルを提供しません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top