NHibernate查询的问题

时间:2009-08-25 22:38:06

标签: nhibernate hierarchy

我有一个非常简单的场景,使用NHibernate:

  • 一个抽象基类“动物”;
  • 带有鉴别列的两个具体子类“cat”和“dog”(狗为1,猫为2);
  • 一个正常的班级人员;

人有多对一的动物。

我想找一个带狗的人的名单。 我怎样才能做到这一点? 很多

1 个答案:

答案 0 :(得分:0)

如果我理解得很好,就像这样:

var list = session.CreateCriteria(typeof(Person))
    .CreateCriteria("Animal")
        .Add(Expression.Eq("discriminatorField", 1))
    .List<Person>();

上面是“Criteria API”,但您可以使用“HQL”,它更像是这样的:

StringBuilder query = new StringBuilder();
query.Append("from Person pers where ");
query.Append("from Animal ani ... and :wichAnimal");
query.Append("and cus.IsActive = :wichAnimal");

IList<Person> list = session
    .CreateQuery(query.ToString())
    .SetInt16("wichAnimal",1)
    .List<Person>(); 

HTH