0

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

  • 一个抽象基类“动物”;
  • 两个带有鉴别器列的具体子类“cat”和“dog”(1 代表狗,2 代表猫);
  • 一个普通类的人;

人有一个多对一的动物。

我想检索一个有狗的人的列表。我怎样才能做到这一点?多谢

4

1 回答 1

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>(); 

高温高压

于 2009-08-26T06:07:05.920 回答