NHibernate QueryOver с SubQuery, где с или - PullRequest
0 голосов
/ 09 октября 2011

Мне нужно сделать следующий SQL с QueryOver в NHibernate:

select *
from Post post
where post.User.Id = 1
or post.Level in (1, 2, 3)
or (select Id
    from SubPost sub
    where sub.Post = post
    and sub.User.Id = 1) != null

Не знаю, как мне это сделать с помощью QueryOver. Для меня проблема в том, как мне объявить подзапрос и как я могу добавить его с условием or. Я надеюсь, кто-то может дать мне подсказку. Спасибо.

С наилучшими пожеланиями, Томас

1 Ответ

0 голосов
/ 09 октября 2011

попробуйте это

Post p = null;
SubPost s = null;
return session.QueryOver<Post>( () => p)
           .where( () => p.User.Id == 1)
           .Where( () => p.Level == 1 || p.Level == 2 || p.Lvel ==3 )
           .JoinAlias( () => s.Post , () => p)
           .Where( () => p.User.Id == 1)
           .List<Post>();

Я не совсем уверен насчет второго места, которое находится после JoinAlias, но попробуйте это

...