2014-11-03 5 views
1

я получил этот запрос:JPA - Регистрация на той же таблице

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 отсутствует:

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

Сгенерированный SQL по 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 

Я не знаю, почему зимуют добавить скобки после второй select? Пожалуйста, если вы знаете, что делать ...

ответ

0

Этот запрос выходит из строя на Oracle, но проходит, например, Postgres. Если вы используете базу данных Oracle, попробуйте установить диалект Oracle SQL на ваш поставщик JPA.
Hibernate SQL Dialects

Смежные вопросы