我需要有关Hibernate Criteria API的帮助 .
我有一个类Job,其中包含ManyToMany关系中的Skill列表 .
我需要根据作为参数给出的技能列表选择作业 .
我试过 Restriction.in("skill.id",ids)
但这给了我错误的列表 . 如果我在搜索表单中选择了2个技能,我想要包含它们的两个工作,所以我需要以某种方式实现AND子句 .
我尝试过Conjunction:
Conjunction and = Restrictions.conjunction();
for(Skill skill:job.getSkills()){
and.add(Restrictions.eq("skill.id",skill.getId()));
}
还有这个:
Criteria crit = criteria.createCriteria("skills",JoinType.LEFT_OUTER_JOIN);
for(Skill skill:job.getSkills()){
crit.add(Restrictions.eq("id", skill.getId()));
}
但它为技能创造了相同的别名,它没有给我任何结果 . sql是 and (skill1_.ID=? and skill1_.ID=?)
任何人都可以帮我这个吗?谢谢
UPDATE:
HQL查询将如下:
select a from Job a where exists (select skill1.id from Skill skill1 join skill1.jobs r where r.id=a.id and skill1.id=1) and exists (select skill2.id from Skill skill2 join skill2.jobs r where r.id=a.id and skill2.id=4)
我需要基于此的Criteria .
1 回答
我设法解决了它 . 现在它完美无缺 .