简体   繁体   English

Hibernate 中缺少关键字

[英]Missing Keyword WITHIN Hibernate

I'm adding a @Formula in my model/entity class in order to make a request for each element.我在我的模型/实体类中添加了一个 @Formula 以便对每个元素发出请求。

@Formula("(select (LISTAGG(ver.ACC_DESC_ES, ', ') WITHIN GROUP (ORDER BY ACC_ID)) from TSEN_ACCIONES_BIB acc, VSEN_ELC_REVISION ver where ELC_ID = acc.ACC_ELC_ID and acc.ACC_ACTIVA='S')")

The problem is that Hibernate takes WITHIN as a table column and it generates a query without it.问题是 Hibernate 将 WITHIN 作为表列,并且在没有它的情况下生成查询。

select
        count(*)
    from
        TSEN_ACCIONES_BIB acc
    where
        revisionit0_.ELC_ID = acc.ACC_ELC_ID
        and acc.ACC_ACTIVA='N'
        and (
            acc.ACC_RESALTAR='S'
            or acc.ACC_RESALTAR='R'
        )) as formula3_0_,
    (select
        LISTAGG(revisionit0_.ACC_DESC,
        ', ') revisionit0_.WITHIN
    GROUP (ORDER BY
        revisionit0_.ACC_ID)
    from
        TSEN_ACCIONES_BIB acc
    where
        revisionit0_.ELC_ID = acc.ACC_ELC_ID
        and acc.ACC_ACTIVA='S') as formula4_0_,  

As you can see, WITHIN GROUP is changed to revisionit0_.WITHIN GROUP.如您所见,WITHIN GROUP 已更改为 revisionit0_.WITHIN GROUP。

How can I deal with it?我该如何处理? Thanks谢谢

This is not hibernate issue but a problem with your query.这不是休眠问题,而是您的查询问题。 Inner query should be named or aliased and you are missing a name so WITHIN is construed as name.内部查询应该命名或别名,并且您缺少名称,因此 WITHIN 被解释为名称。

Correct line will be正确的行将是

@Formula("(select (LISTAGG(ver.ACC_DESC_ES, ', ') TEMPCOLNAME WITHIN GROUP (ORDER BY ACC_ID)) from TSEN_ACCIONES_BIB acc, VSEN_ELC_REVISION ver where ELC_ID = acc.ACC_ELC_ID and acc.ACC_ACTIVA='S')")

I finally solved by myself changing the WITHIN with \\00WITHIN.我终于自己解决了用 \\00WITHIN 更改 WITHIN 的问题。

Maybe @DhruvJoshi answer will work too.也许@DhruvJoshi 的回答也可以。

 @Formula("(select (LISTAGG(ver.ACC_DESC_ES, ', ') \00WITHIN GROUP (ORDER BY ACC_ID)) from TSEN_ACCIONES_BIB acc, VSEN_ELC_REVISION ver where ELC_ID = acc.ACC_ELC_ID and acc.ACC_ACTIVA='S')")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM