Я провел много времени, проверяя все виды сообщений, которые не делали то, что мне было нужно, и ваше сообщение ближе всего к тому, что я искал.
Из моих тестов (с nHibernate 3) ваш запрос некорректен. На самом деле ваши критерии выглядят, как это в SQL:
SELECT *
FROM [Posts] p
LEFT JOIN [PostInteractions] i
ON p.PostId = i.PostID_TargetPost
WHERE (i.UserID_ActingUser = 202 OR i.UserID_ActingUser IS NULL)
возвращающих сообщения/взаимодействия только тогда, когда ActingUser взаимодействия является 202 или что никакого взаимодействия не существует для поста.
После намного больше испытаний я наконец понял это ...
Попробуйте это (vb.net):
session.CreateCriteria(Of Posts)("p") _
.CreateCriteria("Interactions", "i", _
NHibernate.SqlCommand.JoinType.LeftOuterJoin, _
Expression.Eq("i.ActingUser", user))
Там же перегрузка функции CreateCriteria с помощью "withClause". Это работало для меня, и я считаю, что это то, что вы тоже ищете.
Я знаю, что эта тема в довольно старый, но если это может помочь кому-либо еще ....
Кроме того, для больших примеров на запросы NHibernate (это была огромная помощь для меня): http://ayende.com/blog/4023/nhibernate-queries-examples
Весело !