[英]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.