我可以使用Criteria API编写此SQL吗?

时间:2009-02-19 13:08:19

标签: nhibernate

我正在尝试在Criteria API中重现此查询。在我的映射中,Tag和Product之间有很多对,但这只出现在我的Tag类中,即Product类不知道标签。基本上我想找到所有包含所有标签列表的产品。这是我制作的sql虽然可能有所改进。

SELECT Product.* FROM Product

    WHERE Product.ProductID IN (
        SELECT ProductID FROM ProductTagMap
            INNER JOIN Tag ON ProductTagMap.TagId = Tag.TagId
                WHERE Tag.UrlName = 'sticks')

    AND Product.ProductID IN (
        SELECT ProductId FROM ProductTagMap
            INNER JOIN Tag ON ProductTagMap.TagId = Tag.TagId
                WHERE Tag.UrlName = 'vic-firth')

任何想法,非常感谢

1 个答案:

答案 0 :(得分:1)

是的,你最好看看DetachedCriteria的。这不完全是你正在做的事情,但this blog post有一些使用DetachedCriteria的好例子 - 只需用In替换他的存在。