Предложения GROUP BY и HAVING в nHibernate QueryOver

Я пытаюсь написать этот конкретный SQL-запрос на языке nHibernate QueryOver, с которым я не очень знаком:

SELECT MessageThreadId FROM MessageThreadAccesses
WHERE ProfileId IN (arr)
GROUP BY MessageThreadId
HAVING COUNT(MessageThreadId) = arr.Count

где arr - массив целых чисел (идентификаторов пользователей), которые я передаю в качестве аргумента, а сущность MessageThreadAccess выглядит следующим образом:

public virtual MessageThread MessageThread { get; set; }
public virtual Profile Profile { get; set; }
....

После прочтения нескольких потоков переполнения стека и экспериментирования я зашел так далеко со своим запросом (пытаясь получить объект MessageThread - он всегда должен быть только один или ни одного), но он все равно не работает, и я не совсем уверен, что еще можно попробовать , Кажется, что запрос всегда возвращает объект MessageThreadAccess, но при чтении его свойства MessageThread он всегда равен NULL.

var access = Session.QueryOver<MessageThreadAccess>()
    .WhereRestrictionOn(x => x.Profile).IsIn(participants.ToArray())
    .Select(Projections.ProjectionList()
        .Add(Projections.Group<MessageThreadAccess>(x => x.MessageThread))
    )
    .Where(
        Restrictions.Eq(Projections.Count<MessageThreadAccess>(x => x.MessageThread.Id), participants.Count)
    )
    .TransformUsing(Transformers.AliasToBean<MessageThreadAccess>())
    .SingleOrDefault();

return Session.QueryOver<MessageThread>()
    .Where(x => x.Id == access.MessageThread.Id)
    .SingleOrDefault();

Может ли кто-нибудь указать мне правильное направление или объяснить, что я делаю неправильно?

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос