简体   繁体   中英

JPA join query not working

I am trying to use JOIN with JPA. This is my JPA query:

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

The relation from the Assessment to AssessmentText is OneToMany .

When I am executing this query I am getting:

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

I am using JPA implementation: OpenJPA 2.2.1 with MySQL database.

Why do I get this error and how to solve this?

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

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

You didn't mention the relationship from Assessment to AssessmentText was - it needs to be used in the join declaration.

The query you do have shows a relationship from AssessmentText to Assessment which can be used if you refactor the query slightly:

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

Have in mind you should create your query in the following way:

Query query = entityManager.createQuery(queryString);

Not em.createNativeQuery (if you were doing it so).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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