2009-10-16 74 views
0

我有兩個表被認爲是我的域模型中的單個實體。在NHibernate中過濾連接的屬性

我在IAutoMappingOverride中通過調用IgnoreProperty關於連接表的屬性,然後對每個屬性使用Join與Map進行連接。

該配置可以正常工作,但是我在嘗試對連接表的列進行過濾時丟失了。如果我把以下內容:

Session.CreateCriteria<PrimaryEntity>() 
    .CreateCriteria("ExtraPropertiesTable", JoinType.InnerJoin) 
    .Add(Expression.Eq("Language", language)) // Column on ExtraPropertiesTable 
    .List(primaryEntitiesList); 

我得到以下異常:

QueryException:無法解析屬性:的ExtraPropertiesTable:PrimaryEntity

我也曾嘗試的DetachedCriteria無濟於事。

任何想法?

回答

1

如果兩個表都映射到同一個實體,那麼不應該在hibernate查詢中進行連接,只應該引用該實體,並且hibernate會在它生成的SQL查詢中生成連接。另外,CreateCriteria方法期望映射實體的名稱,而不是表格。

+0

這是正確的。問題出在我的流暢配置上:我使用了自動配置覆蓋和IgnorePropety聯接屬性(因爲它們已經自動配置)。該修補程序是使用完整的ClassMap <>,其中IgnoreProperty調用是不必要的。畢竟,一個簡單的屬性引用足以過濾該屬性。 – 2009-10-19 05:49:45