以下代码段确实可以工作:
@Formula("CAST (SELECT AVG(p.\"date\") FROM prediction p) AS \"datetime\"")
@Temporal(TemporalType.DATE)
private Date avgDate;它产生一个包含以下内容的查询(摘录):
SELECT proc0_.ID AS ID1_10_0_,
...
proc0_.CAST
(SELECT AVG(p."date")
FROM prediction p) AS "datetime" AS formula0_0_,
...hibernate抱怨:
... 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在这里不是正确的方法?)
发布于 2015-11-03 18:38:06
去掉CAST后面的空格就没问题了:
@Formula("CAST(SELECT AVG(p.\"date\") FROM prediction p) AS \"datetime\"")
@Temporal(TemporalType.DATE)
private Date avgDate;@Formula的Hibernates解析器相当有限。
我在您的表达式中缺少任何约束-当前公式将为每个实体返回相同的avgDate。但我猜你为了简单起见把它从你的问题中去掉了……
https://stackoverflow.com/questions/33258703
复制相似问题