Вы можете присоединиться, создав подкритерии и выбрав скалярные результаты с помощью Прогнозов. Ваш запрос Criteria может выглядеть примерно так:
session.CreateCriteria(typeof(Person))
.Add(Restrictions.Eq("Id", roleOwnerId))
.SetProjection(Projections.Property("TargetPerson"))
.CreateCriteria("RolesOnPeople", JoinType.InnerJoin) // Or LeftOuterJoin, etc.
.List();
Если вам нужно несколько проекций, используйте ProjectionList, например:
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("...", ...))
.Add(...)
...
)
Я не уверен, как выглядит ваш домен или что вы пытаетесь получить из запроса, поэтому приведенное выше может быть не совсем правильным. Тем не менее, это должно быть то, что вам нужно для начала.