我得到了这个 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)
可能您正在寻找这样的 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。