NHibernate QueryOver 与 SubQuery in where with or

发布于 2024-12-08 16:26:06 字数 353 浏览 0 评论 0原文

我需要在 NHibernate 中使用 QueryOver 执行以下 SQL:

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 条件添加它。我希望,有人能给我提示。谢谢。

最好的问候,托马斯

I need to do the following SQL with QueryOver in 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

I don't now how I can do this with QueryOver. The problem for me is how I have to declare the subquery and how can I add it with an or condition. I hope, someone can give me a hint. Thank you.

Best Regards, Thomas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城旧梦 2024-12-15 16:26:06

试试这个,

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 之后的位置,但试试吧

try this

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>();

i didn't sure really about the second where which is after the JoinAlias, but try it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文