NHibernate で特定の結合サブクラスをフィルタリングすることは可能ですか?
たとえば、次のクラスがあります。
Pet { Name }
Cat: Pet { Paws }
Budgie: Pet { Wings }
Person { Pets }
NHibernate 検索を作成して、4 つの足を持つ猫を持つ人物を取得したいと考えています。
私はペットの属性(名前)を制限することしかできないようです...
NHibernate で特定の結合サブクラスをフィルタリングすることは可能ですか?
たとえば、次のクラスがあります。
Pet { Name }
Cat: Pet { Paws }
Budgie: Pet { Wings }
Person { Pets }
NHibernate 検索を作成して、4 つの足を持つ猫を持つ人物を取得したいと考えています。
私はペットの属性(名前)を制限することしかできないようです...
このようなことを試してみてください。ただし、まだテストしていないので、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>();