我正在尝试编写一个 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。
大家有什么想法或建议吗?这应该很容易。
最佳答案
试试这个:
from Contest Ct, Country Cr
where Cr.CountryCode = :CountryCode
and Cr.Country in elements(Ct.RequiredCountries)
关于sql - SQL 的 HQL 等效项包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/592147/