2012-09-04 13 views
0

我想使用NHibernate過濾器來過濾父類的屬性,但我不斷收到一個錯誤,multi-part identifier "Parent.Active" could not be bound。我的過濾器高清是:從多對一的屬性NHibernate的過濾器

<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到NHibernate,但我認爲這不重要。

回答

0

您收到的錯誤來自SQL Server,無法在表「Parent」上找到「Active」列。 請記住,當您定義過濾器時,您放入條件中的字符串將簡單地附加到的位置條件中,如。如果要過濾該字段,則必須首先確定nHibernate用於SQL查詢的別名,而不是將該別名替換爲「父」。它適合類似「mytable_0」之類的東西。

+0

NHibernate生成的查詢根本不包括父項。這不可能嗎? –