在JPA中执行左连接查询

时间:2012-04-18 04:44:22

标签: java jpa-2.0

我有两个表,一个用于聚会,一个用于记分卡模板映射。记分卡模板映射表具有返回聚会的外键(在id上)。我想查找具有记分卡模板映射详细信息的所有参与方的列表。

但我收到的错误是:

  

java.lang.IllegalArgumentException异常:   org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:   在第1行第172列[选择新的   ScorecardTemplateMapping(P,temMap.scoTemplate,temMap.wrkFlwTemplate)   来自com.kpisoft.common.web.domain.Party p left outer join   ScorecardTemplateMapping temMap on temMap.organization.id = p.id and   temMap.gradeType.id =:gradeType其中   p.organization.organizationTypeId =:orgType和p.clientId =:clientId   按p.organization.name]命令

这是我的疑问:

  

查询q = entityManager.createQuery(“选择新的   ScorecardTemplateMapping(P,temMap.scoTemplate,temMap.wrkFlwTemplate)   来自Party p left outer join ScorecardTemplateMapping temMap on   temMap.organization.id = p.id和temMap.gradeType.id =:gradeType where   p.organization.organizationTypeId =:orgType和p.clientId =:clientId   按p.organization.name命令;);

我不知道为什么这不起作用。请帮忙!

1 个答案:

答案 0 :(得分:1)

有关语法错误的错误消息非常明确:

unexpected token: on

在JPQL中不支持与ON [条件]连接(ON不是保留字)。如何在JPQL中进行联接,例如here。归结为你必须在where子句中显示连接条件。