Cláusulas GROUP BY e HAVING no nHibernate QueryOver

Estou tentando escrever esta consulta SQL específica na linguagem nHibernate QueryOver, com a qual não estou muito familiarizado:

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

Onde arr é uma matriz de inteiros (IDs de usuário) Eu estou passando como argumento e entidade MessageThreadAccess se parece com isso:

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

Depois de ler vários encadeamentos de estouro de pilha e experimentar, cheguei até aqui com minha consulta (tentando obter o objeto MessageThread - deve ser sempre apenas um ou nenhum), mas ainda não funciona e não tenho certeza do que mais tentar . A consulta sempre parece estar retornando o objeto MessageThreadAccess, mas ao ler sua propriedade MessageThread é sempre 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();

Alguém pode me indicar a direção certa ou explicar o que estou fazendo de errado?

Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion