2009-11-19 46 views
2

是否有可能过滤NHibernate中的特定联合子类?NHibernate搜索特定的子类

例如,我有以下类:

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

我想创建一个NHibernate的搜索,给我一份有猫的人与4只爪。

我只能似乎能够对宠物的属性约束(名称)...

回答

0

你应该尝试这样的事情。还没有测试过,所以我不是100%肯定的。

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

谢谢!你是对的 :) – Kram 2009-11-19 11:40:06