2017-05-23 4 views
1

이 sql-query가 있습니다. JPQL에서 쿼리로 만들고 싶지만 올바르게 만들 수는 없습니다. 나는 QuestionAnswers과 QuizQuestions 사이 manytoone 관계를 가지고 :하나의 JPQL 쿼리를 사용하여 여러 테이블 조인

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가

를 사용

그냥 하나 같이 그것을 해결 EDIT 가입 :

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

I : 아마

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

글쎄, JPQL에서 조인이 작동하는 방식이 아닙니다. JPQL에 대한 몇 가지 문서를 읽으십시오. 예를 들어 "JPQL join"을 검색하면 [this] (https://en.wikibooks.org/wiki/Java_Persistence/JPQL#JOIN) 또는 [this] (https://docs.jboss.org/hibernate)로 연결됩니다. /orm/current/userguide/html_single/Hibernate_User_Guide.html#hql-explicit-join). 조인의 작동 방식을 설명합니다. –

+0

감사. 나는 그 링크들도 보았다. 그래도 여전히 문제가 발생했습니다. 내 검색어를 편집하는 방법에 대한 힌트가 있습니까? 감사합니다 – acroscene

+0

안녕하세요! 엔티티의 코드를 보여줍니다. QuizQuestions 및 QuestionAnswers – Dherik

답변

0

,이 같은 JPQL를 찾고 있습니다 JPA 프레임 워크가 알 수 없기 때문에 qa.question.questionId (tableA.tableB.column) 솔루션을 제거합니다. ays는 이것으로 멋진 SQL을 생성한다. 항상 JPQL의 JOIN을 명시 적으로 지정합니다.