2009-10-16 77 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