1

JPAでJOINを使用しようとしています。これは私のJPAクエリです:

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

Assessmentからへの関係AssessmentTextは ですOneToMany

このクエリを実行すると、次のようになります。

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

私は JPA 実装を使用しています: OpenJPA 2.2.1 with MySQL データベース。

このエラーが発生する理由と解決方法を教えてください。

4

4 に答える 4

1

アセスメントテキストを熱心にフェッチしたい場合は、これを行うことができます(アセスメントにはassessmentTextというメンバーがあります)。

SELECT o FROM Assessment AS o LEFT JOIN FETCH o.assessmentText WHERE o.assessmentText.localeCode = :localeCode
于 2013-01-02T11:26:09.107 に答える
0

ONあなたはあなたの質問に欠けていますそれは次のようなものでなければなりません

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

于 2013-01-02T11:31:08.137 に答える
0

次の方法でクエリを作成する必要があることに注意してください。

Query query = entityManager.createQuery(queryString);

そうではありませんem.createNativeQuery(そうしていた場合)。

于 2017-02-07T09:19:15.030 に答える
0

Assessment から AssessmentText への関係について言及していませんでした。結合宣言で使用する必要があります。

あなたが持っているクエリは、クエリを少しリファクタリングする場合に使用できる AssessmentText から Assessment への関係を示しています。

SELECT at.assessment FROM AssessmentText at WHERE at.localeCode = :localeCode
于 2013-01-02T14:14:04.510 に答える