【发布时间】:2009-08-25 22:38:05
【问题描述】:
我有一个非常简单的场景,使用 NHibernate:
- 一个抽象基类“动物”;
- 两个具体的子类“cat”和“dog”,带有鉴别器列(1 代表狗,2 代表猫);
- 一个普通类Person;
人拥有多对一的动物。
我想检索一个有狗的人的列表。 我怎样才能做到这一点? 非常感谢
【问题讨论】:
标签: nhibernate hierarchy
我有一个非常简单的场景,使用 NHibernate:
人拥有多对一的动物。
我想检索一个有狗的人的列表。 我怎样才能做到这一点? 非常感谢
【问题讨论】:
标签: nhibernate hierarchy
如果我理解得很好,是这样的:
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
【讨论】: