我得到了这个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");
答案 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。