我写的
List<Candidate> candidates = (List<Candidate>)session.createQuery("from Candidate as candidate left outer join candidate.skills as skill where skill.id ="+ 1).list();
我得到对象列表,其中包括候选对象和技能对象
我怎样才能只获得候选人名单?
我目前不记得这是否有效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 = ?
这是你需要的吗?
for (Candidate candidate:candidates) {
if(candidate instanceOf Candidate) {
System.out.println("This is candidate obj : " + candidate.toString());
}
}
我认为您只想要一个“加入”,而不是“左外部加入”。
正如维基百科所说,“表 A 和 B 的左外连接(或简称左连接)的结果始终包含“左”表 (A) 的所有记录,即使连接条件在“右”表(B)。特别是外连接会从技能表中提取数据,这听起来像是您不想要的。