Tôi đã dành nhiều thời gian kiểm tra tất cả các loại bài đăng không làm những gì tôi cần và bài đăng của bạn gần nhất với những gì tôi đang tìm kiếm.
Từ các thử nghiệm của tôi (với nHibernate 3) truy vấn của bạn không chính xác. Trên thực tế, tiêu chí của bạn trông giống như thế này trong 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)
Chỉ trả lại bài viết/tương tác khi người dùng tương tác là 202 hoặc không tương tác với bài đăng.
Sau rất nhiều thử nghiệm hơn Cuối cùng tôi figured it out ...
Hãy thử điều này (vb.net):
session.CreateCriteria(Of Posts)("p") _
.CreateCriteria("Interactions", "i", _
NHibernate.SqlCommand.JoinType.LeftOuterJoin, _
Expression.Eq("i.ActingUser", user))
Có một tình trạng quá tải với chức năng CreateCriteria sử dụng một "withClause". Điều đó làm việc perferctly cho tôi và tôi tin rằng đó là những gì bạn đang tìm kiếm quá.
Tôi biết của chủ đề khá cũ nhưng nếu nó có thể giúp bất cứ ai khác ....
Ngoài ra, đối ví dụ tuyệt vời trên các truy vấn nHibernate (đó là một sự giúp đỡ rất lớn đối với tôi): http://ayende.com/blog/4023/nhibernate-queries-examples
Hãy vui vẻ !