2014-11-03 4 views
1

같은 테이블에 가입 :JPA 내가이 요청 가지고

GRAVE: EJB Exception: : javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: ORA-00907: missing right parenthesis 

생성 된 SQL을 :

TypedQuery<ParamGenerauxExternes> q = entityMgr 
      .createQuery("SELECT p FROM ParamGenerauxExternes p " 
        + "WHERE EXISTS " 
        + "(SELECT q FROM ParamGenerauxExternes q " 
        + "WHERE q.key.origine = :pOrigine " 
        + "AND q.key.typeParam LIKE :pTypeParametreBis " 
        + "AND p.key.sousType LIKE CONCAT('%',q.libelleParam) " 
        + "AND q.actif = 'Y') " 
        + "ORDER BY p.libelleParam", ParamGenerauxExternes.class) 
      //.setParameter("pTypeParametre", "REL_TO_HOUSEHOLD") 
      .setParameter("pOrigine", pOrigineGrc) 
      .setParameter("pTypeParametreBis", "GRC_HOUSEHOLD_TYPE_P%"); 

그러나이 작동하지 않습니다, 나는 prenthesis가없는 말씀이 오류 메시지를 받았습니다 JPA는 초 후 괄호가에 의해 선택 : 최대 절전 모드 두 번째후 괄호를 추가하는 이유

select 
    paramgener0_.CODE_PARAM as CODE1_2823_, 
    paramgener0_.ORIGINE as ORIGINE2823_, 
    paramgener0_.SOUS_TYPE as SOUS3_2823_, 
    paramgener0_.TYPE_PARAM as TYPE4_2823_, 
    paramgener0_.ACTIF as ACTIF2823_, 
    paramgener0_.LIBELLE_PARAM as LIBELLE6_2823_ 
from 
    FOA_PARAM_GEN_EXTERNE paramgener0_ 
where 
    exists (
     select 
      (paramgener1_.CODE_PARAM, 
      paramgener1_.ORIGINE, 
      paramgener1_.SOUS_TYPE, 
      paramgener1_.TYPE_PARAM) 
     from 
      FOA_PARAM_GEN_EXTERNE paramgener1_ 
     where 
      paramgener1_.ORIGINE=? 
      and (
       paramgener1_.TYPE_PARAM like ? 
      ) 
      and (
       paramgener0_.SOUS_TYPE like '%'||paramgener1_.LIBELLE_PARAM 
      ) 
      and paramgener1_.ACTIF='Y' 
    ) 
order by 
    paramgener0_.LIBELLE_PARAM 

는 나도 몰라? 당신이해야할 일을 알고 있다면 제발 ...

답변

0

그 쿼리는 오라클에서 실패하지만, 예를 들면 Postgres를 통과합니다. Oracle 데이터베이스를 사용하는 경우 Oracle SQL dialect를 JPA 제공자로 설정하십시오.
Hibernate SQL Dialects