【问题标题】:Execute left join query in JPA在 JPA 中执行左连接查询
【发布时间】:2012-04-18 04:44:22
【问题描述】:

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

但我收到一条错误消息:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌: 在第 1 行附近,第 172 列 [选择新的 ScorecardTemplateMapping(p,temMap.scoTemplate,temMap.wrkFlwTemplate) from com.kpisoft.common.web.domain.Party p 左外连接 ScorecardTemplateMapping temMap on temMap.organization.id=p.id 和 temMap.gradeType.id=:gradeType 其中 p.organization.organizationTypeId=:orgType 和 p.clientId=:clientId 按 p.organization.name 排序]

这是我的查询:

查询 q = entityManager.createQuery("select new ScorecardTemplateMapping(p,temMap.scoTemplate,temMap.wrkFlwTemplate) from Party p left outer join ScorecardTemplateMapping temMap on temMap.organization.id=p.id 和 temMap.gradeType.id=:gradeType 其中 p.organization.organizationTypeId=:orgType 和 p.clientId=:clientId 按 p.organization.name 排序");

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

【问题讨论】:

    标签: java jpa-2.0


    【解决方案1】:

    语法错误的错误信息很清楚:

    unexpected token: on
    

    在 JPQL 中不支持使用 ON [条件] 进行连接(ON 不是保留字)。如何在 JPQL 中进行连接,例如 here。归结为您必须在 where 子句中提出连接条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 2015-11-30
      • 2013-09-03
      • 2015-02-06
      • 2019-10-08
      • 2018-05-05
      相关资源
      最近更新 更多