0

NHibernate フィルターを使用して親クラスのプロパティをフィルター処理しようとしていますが、multi-part identifier "Parent.Active" could not be bound. 私のフィルター定義は次のとおりです。

<filter-def name="useActive" />

私の親クラスはマッピングにこれを持っています:

<property name="Active">
    <column name="ACTIVE" not-null="true" />
</property>
<bag name="Children" table="CHILDREN" inverse="true">
    <key>
        <column name="PARENT_ID_IN_CHILD" />
    </key>
    <one-to-many class="ChildType" />
</bag>

私の子クラスはマッピングにこれを持っています:

<many-to-one name="Parent" class="ParentTyle">
    <column name="PARENT_ID_IN_CHILD" />
</many-to-one>
<filter name="useActive" condition="Parent.Active = 1" />

フィルタリング時にNHibernateに親列をチェックさせるにはどうすればよいですか?

編集: を使用してフィルターを有効にしていますmySession.EnableFilter("useActive");。LINQ-to-NHibernate も使用していますが、それは問題ではないと思います。

4

1 に答える 1

0

あなたが受け取っているエラーは、テーブル「親」の列「アクティブ」を見つけることができない SQL Server からのものです。フィルターを定義する場合、条件に入力した文字列はそのまま select の where 条件に追加されることに注意してください。そのフィールドをフィルタリングしたい場合は、"Parent" の代わりにそのエイリアスを配置するよりも、最初に SQL クエリに nHibernate が使用するエイリアスを特定する必要があります。「mytable_0」などのようなものです。

于 2012-09-05T07:31:05.007 に答える