NHibernate搜索特定的子类

时间:2009-11-19 10:37:20

标签: nhibernate criteria joined-subclass

是否可以在NHibernate中过滤特定的连接子类?

例如,我有以下类:

Pet { Name }
Cat: Pet { Paws }
Budgie: Pet { Wings }
Person { Pets }

我想创建一个NHibernate搜索,给我带有4个爪子的猫人。

我似乎只能限制宠物的属性(姓名)......

1 个答案:

答案 0 :(得分:0)

你应该尝试这样的事情。虽然没有测试过,所以我不是百分百确定。

 DetachedCriteria fetchCatsWith4Pawns = DetachedCriteria.For<Cat>();
 fetchCatsWith4Pawns.Add(Restrictions.Eq("Pawns", 4));
 fetchCatsWith4Pawns.SetProjection(Projections.Id());

 DetachedCriteria fetchPersonsWithCatsWith4Pawns = DetachedCriteria.For<Person>();
 fetchPersonsWithCatsWith4Pawns.CreateCriteria("Pets", "pet").Add(Subqueries.PropertyIn("pet.id", fetchCatsWith4Pawns));
 fetchPersonsWithCatsWith4Pawns.GetExecutableCriteria(session).List<Person>();