子コレクション内のオブジェクトを含むオブジェクトを選択する HQL クエリを作成しようとしています。
例:
コンテスト対象
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)
Countryにも参加を考えていますが、関係を表すオブジェクトクラスがないため、HQLに参加する方法がわかりませんでした。
アイデアや提案はありますか?これは簡単なはずです。