首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hibernate @Formula with CAST

hibernate @Formula with CAST
EN

Stack Overflow用户
提问于 2015-10-21 19:57:57
回答 1查看 995关注 0票数 1

以下代码段确实可以工作:

代码语言:javascript
复制
@Formula("CAST (SELECT AVG(p.\"date\") FROM prediction p) AS \"datetime\"")
@Temporal(TemporalType.DATE)
private Date avgDate;

它产生一个包含以下内容的查询(摘录):

代码语言:javascript
复制
SELECT proc0_.ID AS ID1_10_0_,
...
   proc0_.CAST
(SELECT AVG(p."date")
FROM prediction p) AS "datetime" AS formula0_0_,
...

hibernate抱怨:

代码语言:javascript
复制
... right syntax to use near 'SELECT AVG(p."date") FROM prediction p) AS "datetime" as formula0_0_'

使用@Formula("SELECT CAST (AVG(p.\"date\") AS \"datetime\") FROM prediction p")也不起作用,并出现类似的错误

据我所知,sql之所以失效,是因为hibernate以某种方式将CAST(解释为一个字段,因为它将proc0_预置为字段。

对如何解决这个问题有什么建议吗?(也许@Formula在这里不是正确的方法?)

EN

回答 1

Stack Overflow用户

发布于 2015-11-03 18:38:06

去掉CAST后面的空格就没问题了:

代码语言:javascript
复制
@Formula("CAST(SELECT AVG(p.\"date\") FROM prediction p) AS \"datetime\"")
@Temporal(TemporalType.DATE)
private Date avgDate;

@Formula的Hibernates解析器相当有限。

我在您的表达式中缺少任何约束-当前公式将为每个实体返回相同的avgDate。但我猜你为了简单起见把它从你的问题中去掉了……

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33258703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档