2
我有一個具有Skill實體的映射集合的課程實體。現在我想檢查通過HQL,如果course.skills集合的所有元素存在於另一個集合中,我將作爲參數傳遞給查詢。如何檢查集合中的所有元素是否存在於HQL中的另一個集合中
我可以檢查一個元素是否已經在使用IN語句的其他集合中,但我似乎無法弄清楚如何檢查是否存在所有元素。
希望有人能幫助我。謝謝!
我有一個具有Skill實體的映射集合的課程實體。現在我想檢查通過HQL,如果course.skills集合的所有元素存在於另一個集合中,我將作爲參數傳遞給查詢。如何檢查集合中的所有元素是否存在於HQL中的另一個集合中
我可以檢查一個元素是否已經在使用IN語句的其他集合中,但我似乎無法弄清楚如何檢查是否存在所有元素。
希望有人能幫助我。謝謝!
我很想找到一個更優雅的解決這個問題,但我解決它與這樣的查詢:
select course from Course course
where not exists (
select skill.id from Skill skill
where skill.id in :setOfSkillIdsToHave
and skill.id not in (
select courseSkill.id
from Course course2
inner join course2.skills courseSkill
where course2.id = course.id))
,或者
select course from Course course
where :numberOfSkillsToHave = (
select count(skill.id)
from Course course2
inner join course2.skills courseSkill
where courseSkill.id in :setOfSkillIdsToHave
and course2.id = course.id)
你可以給你一些代碼示例已經嘗試過...因爲問題不太清楚 –