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

时间:2017-05-23 20:45:58

标签: java jpa jpql

我得到了这个sql-query我想在JPQL中创建查询但是我无法做到正确。我在QuestionAnswers和QuizQuestions之间建立了很多关系:

SQL:

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;

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");

我在Intellij中遇到语法错误。

有什么不对?

我正在使用EclipseLink

修改 只用一次连接解决了这个问题:

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

1 个答案:

答案 0 :(得分:2)

可能你正在寻找像这样的JPQL:

SELECT quiz.name, quizquestion.question, questionasnswer.answer FROM Quiz quiz
JOIN quiz.quizQuestions quizquestion
JOIN quizquestion.questionAnswers questionasnswer
WHERE quiz.id = 1;

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