Могу ли я написать этот SQL, используя Criteria API? - PullRequest
0 голосов
/ 19 февраля 2009

Я пытаюсь воспроизвести этот запрос в 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 Ответ

1 голос
/ 19 февраля 2009

Да, вы, вероятно, лучше всего смотрите на DetachedCriteria. Это не совсем то, что вы делаете, но в этом блоге есть несколько хороших примеров использования DetachedCriteria - просто замените его Exists вместо In.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...