缺少关键字WITHIN处于休眠状态

问题描述

我在我的模型/实体类中添加了一个@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')")

问题在于,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_,

如您所见,WITHIN GROUP更改为versionit0_.WITHIN 组。

我该如何处理? 谢谢

解决方法

这不是休眠问题,而是您的查询问题。 内部查询应命名或别名,并且您缺少名称,所以WITHIN被解释为名称。

正确的行将是

@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')")
,

我终于自己解决了,用\ 00WITHIN更改WITHIN。

也许@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')")

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...