У меня была та же проблема, и я пытался прочитать HQL-документацию, однако некоторые функции, кажется, не реализованы в NHibernate (например, с ключевым словом)
Я получил такое решение:
select p
FROM Post p
JOIN p.Tags tag1
JOIN p.Tags tag2
WHERE
tag1.Id = 1
tag2.Id = 2
То есть динамически создавать HQL, используя соединение для каждого тега, а затем сделать выбор в предложении WHERE. Это сработало для меня. Я пытался сделать то же самое с DetachedCriteria, но столкнулся с проблемой при попытке присоединиться к таблице несколько раз.