Skill エンティティのマップされたコレクションを持つ Course エンティティがあります。course.skills コレクションのすべての要素が、クエリでパラメーターとして渡す別のコレクションに存在するかどうか、HQL を介して確認したいと考えています。
INステートメントを使用して、ある要素が他のコレクションに既にあるかどうかを確認できますが、すべての要素が存在するかどうかを確認する方法がわかりません。
誰かが私を助けてくれることを願っています。ありがとう!
Skill エンティティのマップされたコレクションを持つ Course エンティティがあります。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)