2

Is it possible to filter on a particular joined-subclass in NHibernate?

For example, I have the following classes:

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

I want to create an NHibernate search to give me Persons with Cats with 4 paws.

I can only seem to be able to restrict on a Pet's attributes (Name)...

Kram
  • 4,099
  • 4
  • 39
  • 60

1 Answers1

0

You should try something like this. Haven't tested it though, so I'm not 100% sure.

 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>();
BennyM
  • 2,796
  • 16
  • 24