gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:54:17 25 4
gpt4 key购买 nike

我得到了这个 sql 查询,我想在 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");

最佳答案

您可能正在寻找这样的 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 中显式连接。

关于java - 使用一个 JPQL 查询连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44144693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com