SELECT max(measure_time) as str2,avg(temperature) as stravg FROM weather_equipment_data_1 WHERE 1>0 AND MEASURE_TIME BETWEEN '2008-04-17 10:12:44' AND '2008-04-17 10:14:44' group by ((DATEDIFF(second,'1970-01-01',MEASURE_TIME)-1) / 5)
这段sql描述了按在这两个时间范围之内按5秒钟统计temperature平均值。
在sqlserver中运行一切正常。
但是在hibernate中执行Query query = session.createSQLQuery(sql)却报错为
java.sql.SQLException: The value supplied cannot be converted to DECIMAL
解决方法:
Query query = session.createSQLQuery(sql)
.addScalar("str2",Hibernate.STRING)
.addScalar("stravg",Hibernate.STRING);
将两个查询字段分别强制转为hibernate string之后运行正常。
本文介绍了一段SQL查询语句,在特定条件下执行出现错误的情况及解决方案。该SQL语句旨在按5秒间隔统计指定时间范围内温度的平均值。在SQL Server中运行正常,但在Hibernate环境下执行时遇到类型转换错误。通过调整Hibernate查询方式,成功解决了这一问题。

被折叠的 条评论
为什么被折叠?



