gpt4 book ai didi

java - hibernate @Formula 与 CAST

转载 作者:行者123 更新时间:2023-11-30 03:12:53 26 4
gpt4 key购买 nike

以下代码片段确实有效:

@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在这里不是正确的方法?)

最佳答案

删除CAST后面的空格就可以了:

@Formula("CAST(SELECT AVG(p.\"date\") FROM prediction p) AS \"datetime\"")
@Temporal(TemporalType.DATE)
private Date avgDate;

@Formula 的 Hibernate 解析器非常有限。

我在表达式中缺少任何约束 - 当前公式将为每个实体返回相同的 avgDate。但我想你已经从你的问题中删除了这一点以使其简单......

关于java - hibernate @Formula 与 CAST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33258703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com