Hibernate 如何检查HQL中一个集合的所有元素是否存在于另一个集合中
我有一个课程实体,它有一个技能实体的映射集合。现在我想通过HQL检查course.skills集合的所有元素是否存在于另一个集合中,我将在查询中作为参数传递该集合 我可以使用in语句检查另一个集合中是否已经存在一个元素,但我似乎不知道如何检查是否所有元素都存在Hibernate 如何检查HQL中一个集合的所有元素是否存在于另一个集合中,hibernate,collections,mapping,hql,Hibernate,Collections,Mapping,Hql,我有一个课程实体,它有一个技能实体的映射集合。现在我想通过HQL检查course.skills集合的所有元素是否存在于另一个集合中,我将在查询中作为参数传递该集合 我可以使用in语句检查另一个集合中是否已经存在一个元素,但我似乎不知道如何检查是否所有元素都存在 希望有人能帮我。谢谢 我很想找到一个更优雅的解决方案来解决这个问题,但我用这样一个问题来解决它: select course from Course course where not exists ( select skill.i
希望有人能帮我。谢谢 我很想找到一个更优雅的解决方案来解决这个问题,但我用这样一个问题来解决它:
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)