我試圖編寫一個HQL查詢來選擇包含子集合中的對象的對象。SQL的HQL等價物包含
例子:
競賽對象
ContestID
ContestName
RequiredCountries -> one to many collection of Country objects
Country對象
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')
OR
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。
任何人有任何想法或建議?這應該很容易。
正是我所需要的,在SQL中創建一個IN語句 – Brian 2009-02-26 21:52:05