내 기본 쿼리가 올바르게 작동합니다. oracle sqlplus. 그러나 JPA 기본 쿼리를 통해 제공 오류 다음JPA + Hibernate + Native Query + 결과 집합의 dtos의 사용자 정의 목록
[ERROR] org.hibernate.util.JDBCExceptionReporter - ORA-00923 :
을 예상 한 위치에 FROM 키워드를 찾을 수 없습니다기본 쿼리
SELECT sch.school_name, term.term_name, count(material.MATERIAL_ID), sip.SIP_COUNT, ... FROM VA_SCHOOL sch JOIN va_user_school_rel usr1 on sch.school_id=usr1.school_id
JOIN va_user ur ON usr1.USER_ID= ur.USER_ID
JOIN va_user_role_rel urr1 on usr1.user_id=urr1.user_id
JOIN va_role rle ON urr1.role_id= rle.role_id
JOIN va_user_school_rel usr2 on sch.school_id=usr2.school_id
JOIN va_user ur1 ON usr2.USER_ID= ur1.USER_ID
JOIN va_user_role_rel urr2 on usr2.user_id=urr2.user_id
JOIN va_role rle1 ON urr2.role_id= rle1.role_id
JOIN va_term term on term.school_id = usr1.school_id
JOIN va_class course on course.term_id = term.term_id
JOIN va_material material on material.class_id = course.class_id
LEFT JOIN (SELECT VA_CLASS.TERM_ID TERM_ID, COUNT(*) as SIP_COUNT FROM VA_CLASS JOIN VA_MATERIAL ON VA_MATERIAL.CLASS_ID = VA_CLASS.CLASS_ID WHERE VA_CLASS.reference_flag = 'A' AND trunc(VA_MATERIAL.SCHOOL_STATUS) = 0 GROUP BY VA_CLASS.TERM_ID) sip on term.term_id = sip.term_id
WHERE course.reference_flag = 'A' AND rle.role_name='ROLE_1' AND rle1.role_name='ROLE_2'
GROUP BY sch.school_name, term.term_name, sip.SIP_COUNT
ORDER BY sch.school_name, term.term_name
JPA 기본 검색어 :
SELECT new MyDTO(sch.school_name, term.term_name, count(material.MATERIAL_ID), sip.SIP_COUNT, ...) FROM VA_SCHOOL sch
JOIN va_user_school_rel usr1 on sch.school_id=usr1.school_id
JOIN va_user ur ON usr1.USER_ID= ur.USER_ID
JOIN va_user_role_rel urr1 on usr1.user_id=urr1.user_id
JOIN va_role rle ON urr1.role_id= rle.role_id
JOIN va_user_school_rel usr2 on sch.school_id=usr2.school_id
JOIN va_user ur1 ON usr2.USER_ID= ur1.USER_ID
JOIN va_user_role_rel urr2 on usr2.user_id=urr2.user_id
JOIN va_role rle1 ON urr2.role_id= rle1.role_id
JOIN va_term term on term.school_id = usr1.school_id
JOIN va_class course on course.term_id = term.term_id
JOIN va_material material on material.class_id = course.class_id
LEFT JOIN (SELECT VA_CLASS.TERM_ID TERM_ID, COUNT(*) as SIP_COUNT FROM VA_CLASS JOIN VA_MATERIAL ON VA_MATERIAL.CLASS_ID = VA_CLASS.CLASS_ID WHERE VA_CLASS.reference_flag = 'A' AND trunc(VA_MATERIAL.SCHOOL_STATUS) = 0 GROUP BY VA_CLASS.TERM_ID) sip on term.term_id = sip.term_id
WHERE course.reference_flag = 'A' AND rle.role_name=:p_roleName AND rle1.role_name=:p_roleName1
GROUP BY sch.school_name, term.term_name, sip.SIP_COUNT
ORDER BY sch.school_name, term.term_name
생성하는 원시 SQL을보고 검사하려면 hibernate.show_sql = true로 설정해보십시오. 그게 도움이 될거야. –