Я пытаюсь написать запрос HQL для выбора объектов, содержащих объект в дочерней коллекции.HQL Эквивалент SQL содержит
Пример:
Конкурс Объект
ContestID
ContestName
RequiredCountries -> one to many collection of Country objects
Страна Объект
CountryCode
CountryName
SQL-эквивалент того, что я хочу:
SELECT * FROM CONTEST C
WHERE C.CONTESTID IN(SELECT CONTESTID FROM CONTEST_COUNTRY CC INNER JOIN COUNTRY CTRY ON
CC.COUNTRYCODE = CTRY.COUNTRYCODE WHERE COUNTRYCODE='USA')
ИЛИ
SELECT * FROM CONTEST C
WHERE EXISTS(SELECT CONTESTID FROM CONTEST_COUNTRY CC INNER JOIN COUNTRY CTRY ON
CC.COUNTRYCODE = CTRY.COUNTRYCODE WHERE COUNTRYCODE='USA' AND CC.CONTESTID=C.CONTESTID)
У меня есть этот HQL, который работает, но кажется, что не является хорошим решение-
from Contest C
where (from Country where CountryCode = :CountryCode) = some elements(C.RequiredCountries)
Я также рассмотреть вопрос о присоединении с страной, но так как у меня нет объекта класс для представления отношений, я не был уверен, как присоединиться к HQL.
У кого-нибудь есть идеи или предложения? Это должно быть легко.
Точно то, что мне нужно, создает инструкцию IN в SQL – Brian