【问题标题】:Can I write this SQL using Criteria API?我可以使用 Criteria API 编写此 SQL 吗?
【发布时间】:2009-02-19 13:08:18
【问题描述】:

我正在尝试在 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')

任何想法,非常感谢

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我花了一些时间才弄清楚,但链接确实有帮助
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2015-05-12
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多