Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用一个JPQL查询连接多个表_Java_Jpa_Jpql - Fatal编程技术网

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

Java 使用一个JPQL查询连接多个表,java,jpa,jpql,Java,Jpa,Jpql,我得到了这个我想在JPQL中创建为查询的sql查询,但是我不能正确地得到它。我得到了问题答案和提问之间的多种关系: SQL: 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.questi

我得到了这个我想在JPQL中创建为查询的sql查询,但是我不能正确地得到它。我得到了问题答案和提问之间的多种关系:

SQL:

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中发现语法错误

有什么不对劲

我在用日食

编辑 只需一个连接即可解决此问题:

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中显式连接。

好吧,这不是JPQL中连接的工作方式。阅读一些关于JPQL的文档。只需在谷歌上搜索“JPQL连接”就可以得到,例如,或,这解释了连接是如何工作的。谢谢。我也看到了这些链接。但是仍然有一些问题,比如如何编辑我的查询?谢谢!向我们展示提问和问答的实体代码
SELECT quiz.name, quizquestion.question, questionasnswer.answer FROM Quiz quiz
JOIN quiz.quizQuestions quizquestion
JOIN quizquestion.questionAnswers questionasnswer
WHERE quiz.id = 1;