多対多の関係を介して接続されている 2 つのエンティティ (ジョブと場所) があります。最近、場所エンティティにソフト削除ロジックを実装し、次のようにジョブ マッピングにフィルターを追加しました。
HasManyToMany(x => x.Locations)
.Table("JobLocation")
.ParentKeyColumn("JobId")
.ChildKeyColumn("LocationId")
.ApplyChildFilter<ExcludeDeletedFilter>("IsDeleted = :condition")
.Cascade.None();
多対多の関係のクエリは次のようになります
select ...
from Job job
left outer join JobLocation jl
on jl.JobId = job.Id
left outer join Location loc
on loc.Id = jl.LocationId and IsDeleted = 0
問題は、いくつかの場所が削除されたジョブをフェッチするときに、ジョブ エンティティの Locations コレクションに、削除された各場所の null エントリが含まれることです。
多対多の関係を介してフェッチされたときに、このソフト削除レコードを処理する最良の方法は何ですか? (1 対多の場合、このフィルタは優れた機能を果たします)
これを行うには、他にどのような代替案を検討する必要がありますか?