我有一个非常简单的场景,使用 NHibernate:
- 一个抽象基类“动物”;
- 两个带有鉴别器列的具体子类“cat”和“dog”(1 代表狗,2 代表猫);
- 一个普通类的人;
人有一个多对一的动物。
我想检索一个有狗的人的列表。我怎样才能做到这一点?多谢
我有一个非常简单的场景,使用 NHibernate:
人有一个多对一的动物。
我想检索一个有狗的人的列表。我怎样才能做到这一点?多谢
如果我理解得很好,是这样的:
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>();
高温高压