2

I have entity Problem mapped using many-to-many to entity Tag (Problem has a list of tags). I want to load all the Problems, which have specific Tags.
For example:
Problem1 (tag1)
Problem2 (tag1, tag2)
Problem3 (tag1, tag3)
Problem4 (tag3, tag4)
I want to get the problems by filter "tag1, tag2". The system shall return:
Problem1 (tag1)
Problem2 (tag1, tag2)
Problem3 (tag1, tag3)
I have been puzzling over this problem for a week already. Have you any ideas?
P.S. Load all the list and filter it using LINQ is the last possible variant...

casperOne
  • 73,706
  • 19
  • 184
  • 253
Sergey Metlov
  • 25,747
  • 28
  • 93
  • 153

1 Answers1

2

HQL is a better fit for these queries than Criteria.

One possible solution:

session.CreateQuery(@"select distinct p
                      from Problem p
                      join p.Tags t
                      where t in (:tags)")
       .SetParameterList("tags", listOfTags)
Diego Mijelshon
  • 52,548
  • 16
  • 116
  • 154