2012-08-13 57 views
1

我有一个实体联系有三个联合子类(Person,Company,Branch)。 当我做一个联系人选择查询,我应该只得到人的,公司或分公司,我能做到使用类在HQL的条件 - 查询

从一个联系,其中的A.class =人

这是工作选择正确的人和分支的情况下。但由于分公司是他自己引用公司(与CompanyId),当我从一联系,现在做

选择其中的A.class =公司

它将与CompanyId取代公司(从科顺实体)。

有人有一个想法,我如何防止HQL用真正的列替换类值?

+0

也许你可以使用鉴别器,而不是你的项目?见[这里](http://stackoverflow.com/questions/6887168/using-discriminator-with-fluent-nhibernate)和[这里](http://stackoverflow.com/questions/4708969/query-by-discriminator-在-NHibernate的)。 – Handprint 2012-08-14 13:21:54

回答

2

尝试使用类的完全限定域名(包括命名空间):

select from Contact a where a.class = Your.Namespace.Company 

这应有助于NHibernate的从属性名称区分类名。