仅返回union子类中的某些子类

时间:2012-01-09 15:47:31

标签: c# nhibernate

我在NHibernate中有这种情况。我有一个基础具体类(Animal)和两个union子类(Dog和Cat)。

我想要一个过滤我不想要的子类的查询,类似这样的

                var result = session.CreateCriteria<Animal>()
                                // .Add(NotOfType(Cat))
                                .List<Animal>();

因为动物是一个具体的类,有一个表格,我想要检索除猫以外的所有动物(包括“通用”动物和狗)

这可能吗?

1 个答案:

答案 0 :(得分:4)

每个实体都有一个名为class的特殊属性。

var result = session.CreateCriteria<Animal>()
                    .Add(Expression.Not( Expression.Eq("class", typeof(Cat)))
                    .List<Animal>();

或在HQL中

from Animal a where a.class != 'Cat'