Tôi đang cố gắng viết truy vấn HQL để chọn các đối tượng chứa đối tượng trong bộ sưu tập con.HQL Tương đương với SQL chứa
Ví dụ:
thi Object
ContestID
ContestName
RequiredCountries -> one to many collection of Country objects
Object Nước
CountryCode
CountryName
Các sql tương đương với những gì tôi muốn:
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')
HOẶC
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)
Tôi có HQL này, mà làm việc, nhưng có vẻ như không phải là một tốt solution-
from Contest C
where (from Country where CountryCode = :CountryCode) = some elements(C.RequiredCountries)
Tôi cũng xem xét tham gia với quốc gia, nhưng vì tôi không có một đối tượng lớp để đại diện cho mối quan hệ, tôi đã không chắc chắn làm thế nào để tham gia vào HQL.
Bất kỳ ai có bất kỳ ý tưởng hoặc đề xuất nào? Điều này phải dễ dàng.
Chính xác những gì tôi cần, tạo câu lệnh IN trong SQL – Brian