需要帮助将此查询转换为 NHibernate 标准

Posted

技术标签:

【中文标题】需要帮助将此查询转换为 NHibernate 标准【英文标题】:Need help translating this query to NHibernate Criteria 【发布时间】:2013-08-25 13:20:14 【问题描述】:

有人可以帮我把这个查询翻译成 NHibernate Criteria 吗?还是标准不适合这个?

查询:

SELECT b.*
 FROM Bookmarks b
 JOIN (SELECT tg.BookmarkId
        FROM TagsBookmarks tg
        JOIN Tags t ON t.id = tg.TagId
        WHERE t.Title IN ('c#','tutorials')
      GROUP BY tg.BookmarkId
        HAVING COUNT(DISTINCT t.Title) = 2) x ON x.BookmarkId = b.Id

【问题讨论】:

【参考方案1】:

Hibernate 不允许在 from 子句中使用子查询。你可以改用in 重写它:

SELECT b.*
FROM Bookmarks b
where b.id in (SELECT tg.BookmarkId
               FROM TagsBookmarks tg JOIN
                    Tags t
                    ON t.id = tg.TagId
               WHERE t.Title IN ('c#','tutorials')
               GROUP BY tg.BookmarkId
               HAVING COUNT(DISTINCT t.Title) = 2
              )

【讨论】:

感谢您的回答。您能否也给我在 Criteria 中的查询? @Mr.nuub 。 . .这超出了我的专业范围。 参见nhforge.org/doc/nh/en/index.html#querycriteria-detachedqueries 了解如何使用标准编写子查询,您可以通过对投影施加限制来执行having 子句,如下所示:***.com/questions/2054309/…

以上是关于需要帮助将此查询转换为 NHibernate 标准的主要内容,如果未能解决你的问题,请参考以下文章

优化 NHibernate 查询

将此 SQL 查询转换为 mongodb 查询 -

NHibernate 将 sql 查询转换为 NHibernate QueryOver 查询

将 SQL 查询转换为 NHibernate

ASP 专家 - 需要帮助将此 PHP 代码转换为 ASP

无法在 Google BigQuery 中将此旧版 SQL 转换为标准 SQL