次のようなクラス設定があります。
public abstract class Parent
{
public virtual bool IsDeleted { get; set; }
}
public class Child : Parent
{
}
public class Other
{
public virtual ICollection<Child> Children { get; set; }
}
子は、親の結合サブクラスとしてマップされます。チャイルデンは多対多のバッグとしてマッピングされています。バッグには、SoftDeletableFilterという名前のフィルターが適用されています。フィルタマッピングは次のようになります。
<filter-def name="SoftDeleteableFilter" condition="(IsDeleted = 0 or IsDeleted is null)" />
その問題は、Other.Childrenがロードされると、フィルターが親テーブルではなく子テーブルに適用されることです。NHibernateに親クラスにフィルターを適用するように指示する方法はありますか?
編集:これが親マッピングです:
<class name="Parent">
<id ..
<property name="IsDeleted" type="System.Boolean">
<column name="IsDeleted" />
</property>
<joined-subclass name="Child">
<key>
<column name="ParentId" />
</key>
...
</joined-subclass>
</class>