Pasé mucho tiempo revisando todo tipo de publicaciones que no hacían lo que necesitaba y su publicación es la más cercana a la que estaba buscando.
De mis pruebas (con nHibernate 3) su consulta no es correcta. En realidad sus criterios se parece más a esto en 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)
que devuelve mensajes/interacciones sólo cuando ActingUser de la interacción es 202 o que no existe interacción para el puesto.
Después de mucho más pruebas de que finalmente lo descubrí ...
Prueba esto (vb.net):
session.CreateCriteria(Of Posts)("p") _
.CreateCriteria("Interactions", "i", _
NHibernate.SqlCommand.JoinType.LeftOuterJoin, _
Expression.Eq("i.ActingUser", user))
Hay una sobrecarga de la función createCriteria utilizando un "withClause". Eso funcionó perfectamente para mí y creo que es lo que estás buscando también.
sé del tema bastante viejo, pero si puede ayudar a alguien más ....
Además, para grandes ejemplos de consultas Nhibernate (que fue una gran ayuda para mí): http://ayende.com/blog/4023/nhibernate-queries-examples
Diviértete !