使用一个 JPQL 查询连接多个表

acr*_*ene 4 java jpa jpql

我得到了这个 sql 查询,我想在 JPQL 中创建为查询,但我做对了。我在 QuestionAnswers 和 QuizQuestions 之间有一个多对一的关系:

查询语句:

SELECT quizName, question, answer FROM Quiz 
JOIN QuizQuestions on Quiz.quizId = QuizQuestions.Quiz_QuizId 
JOIN QuestionAnswers on QuizQuestions.questionId = QuestionAnswers.question_questionId 
WHERE quiz.quizId = 1;
Run Code Online (Sandbox Code Playgroud)

JPQL 查询:

Query query = entityManager.createQuery("SELECT q.quizName, f.question, a.answer FROM Quiz q, QuizQuestions f, QuestionAnswers a LEFT JOIN QuestionAnswers ON f.questionId=a.question.questionId");
Run Code Online (Sandbox Code Playgroud)

我在 Intellij 中遇到语法错误。

有什么问题?

我正在使用 EclipseLink

EDIT 只用一个 join 就解决了这个问题:

Query query = entityManager.createQuery("SELECT f.quiz.quizName FROM QuizQuestions f JOIN QuestionAnswers qa WHERE f.questionId = qa.question.questionId");
Run Code Online (Sandbox Code Playgroud)

Dhe*_*rik 5

可能您正在寻找这样的 JPQL:

SELECT quiz.name, quizquestion.question, questionasnswer.answer FROM Quiz quiz
JOIN quiz.quizQuestions quizquestion
JOIN quizquestion.questionAnswers questionasnswer
WHERE quiz.id = 1;
Run Code Online (Sandbox Code Playgroud)

我会用qa.question.questionId(tableA.tableB.column)驱逐解决方案,因为 JPA 框架并不总是从中生成好的 SQL。始终明确 JPQL 中的 JOIN。