【发布时间】:2010-10-10 04:19:18
【问题描述】:
我正在尝试编写一个 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。
有人有什么想法或建议吗?这应该很容易。
【问题讨论】: