Ho passato molto tempo a controllare tutti i tipi di post che non facevano ciò di cui avevo bisogno e il tuo post è il più vicino a quello che stavo cercando.
Dai miei test (con nHibernate 3) la query non è corretta. In realtà i tuoi criteri sembra più presente in 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)
che restituisce messaggi/interazioni solo quando ActingUser della interazione è 202 o che non esiste alcuna interazione per il posto.
Dopo lotto più test ho finalmente capito che fuori ...
Prova questo (vb.net):
session.CreateCriteria(Of Posts)("p") _
.CreateCriteria("Interactions", "i", _
NHibernate.SqlCommand.JoinType.LeftOuterJoin, _
Expression.Eq("i.ActingUser", user))
C'è un sovraccarico alla funzione createCriteria utilizzando una "withClause". Questo ha funzionato perfettamente per me e credo che sia quello che stai cercando anche tu.
so del tema piuttosto vecchio, ma se può aiutare chiunque altro ....
Inoltre, per grandi esempi sulle query NHibernate (è stato un grande aiuto per me): http://ayende.com/blog/4023/nhibernate-queries-examples
Buon divertimento !