Как реализовать функцию listagg в hibernate 5.0.1 без использования нативного запроса - PullRequest
0 голосов
/ 29 мая 2019

Я работаю в проекте весенней загрузки 1.5.Я реализовал listagg, но я получаю «Непредвиденную ошибку токена WITHIN». Пожалуйста, помогите мне реализовать listagg в спящем режиме без использования нативного запроса.

Output:
    jobname     Empno
    AC_ACCOUNT  206
    AC_MGR      205
    AD_ASST     200
    AD_PRES     100
    AD_VP       101,102
    FI_ACCOUNT  110 ,113 ,111 ,109 ,112

select  jobname, listagg(empno, ',') within group (order by empno) empno
  from emp group by jobname;

-

unexpected token: within","stack_trace":"antlr.NoViableAltException: unexpected token: within
at org.hibernate.hql.internal.antlr.HqlBaseParser.aliasedExpression(HqlBaseParser.java:2365)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectedPropertiesList(HqlBaseParser.java:1379)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1282)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1022)
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:730)
at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:323)
at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:279)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
at

1 Ответ

0 голосов
/ 29 мая 2019

Боюсь, но это невозможно.Ни JPA, ни Hibernate не знают listagg.

Вы должны использовать SQL.

Причина в том, что JPA и Hibernate реализовали функции, которые работают во всех базах данных, но listagg реализован только несколькими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...