繁体   English   中英

JPA联接查询不起作用

[英]JPA join query not working

我正在尝试将JOIN与JPA一起使用。 这是我的JPA查询:

SELECT o FROM Assessment AS o 
INNER JOIN AssessmentText at 
WHERE o = at.assessment 
AND at.localeCode = :localeCode

AssessmentAssessmentText OneToMany的关系是OneToMany

当我执行此查询时,我得到:

org.apache.openjpa.persistence.ArgumentException: 
    Encountered "INNER JOIN AssessmentText at" at character 31, 
    but expected: [".", "FETCH", "INNER", "JOIN", "LEFT", <IDENTIFIER>].

我正在使用JPA实现:带有MySQL数据库的OpenJPA 2.2.1。

为什么会出现此错误以及如何解决?

假设您希望获取评估文本,则可以执行此操作(假设评估具有一个名为评估文本的成员):

SELECT o FROM Assessment AS o LEFT JOIN FETCH o.assessmentText WHERE o.assessmentText.localeCode = :localeCode

您在查询中缺少ON应该是这样的

SELECT o FROM Assessment AS o INNER JOIN AssessmentText at ON o = at.assessment WHERE at.localeCode = :localeCode

您没有提到从Assessment到AssessmentText的关系-它需要在连接声明中使用。

您确实拥有的查询显示了评估文本与评估之间的关系,如果您稍微重构查询,可以使用该关系:

SELECT at.assessment FROM AssessmentText at WHERE at.localeCode = :localeCode

请记住,您应该通过以下方式创建查询:

Query query = entityManager.createQuery(queryString);

不是em.createNativeQuery (如果您这样做的话)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM