我正在尝试编写一个 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。
有人有什么想法或建议吗?这应该很容易。