2012-01-09 49 views
3

我在NHibernate中有这种情况。我有一个基础具体类(动物)和两个联合子类(狗和猫)。只返回联合子类中的某些子类

我想要一个查询,过滤器,我不想子类,像这样

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

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

这可能吗?

回答

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' 
+0

,完美的工作!谢谢! – 2012-02-01 13:20:20