需要帮助将此查询转换为 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 标准的主要内容,如果未能解决你的问题,请参考以下文章