Hibernate缺失关键字WITHIN

3
我正在我的模型/实体类中添加一个@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 被更改为 revisionit0_.WITHIN GROUP。

我该怎么处理呢? 谢谢。


你可能需要将“WITHIN”添加到该方言的关键字列表中。 - Christian Beikov
2个回答

0

这不是Hibernate的问题,而是你查询的一个问题。 内部查询应该被命名或别名,而你缺少了一个名称,所以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')")

0

我最终自己解决了问题,将 WITHIN 改为 \00WITHIN。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接