我写
List<Candidate> candidates = (List<Candidate>)session.createQuery("from Candidate as candidate left outer join candidate.skills as skill where skill.id ="+ 1).list();
我获得了对象列表,其中包括候选对象和技能对象
我如何只获得候选人名单?
答案 0 :(得分:1)
我目前无法记住这是否有效 from Candidate as candidate where candidate.skills.skill.id = ?
。
如果没有,您可以使用:
select distinct candidate from Candidate as candidate left outer join candidate.skills as skill where skill.id = ?
答案 1 :(得分:0)
这是你需要的吗?
for (Candidate candidate:candidates) {
if(candidate instanceOf Candidate) {
System.out.println("This is candidate obj : " + candidate.toString());
}
}
答案 2 :(得分:0)
我认为你只想要一个“加入”,而不是“左外连接”。
正如Wikipedia所说,“表A和B的左外连接(或简称左连接)的结果总是包含”左“表(A)的所有记录,即使连接条件也是如此在“右”表(B)中找不到任何匹配的记录。“特别是外连接将从技能表中提取数据,这听起来像你不想要的。