字段上的聚合返回org.hibernate.exception.DataException:无法在Hibernate中执行查询

时间:2014-03-07 12:36:31

标签: hibernate

我在mysql数据库的表中有一个类型为SMALLINT(5)的字段。

当我尝试使用投影对字段进行聚合操作(sum())时, 我得到以下异常

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: 
'8.0042892E7' in column '1' is outside valid range for the datatype SMALLINT.

我将其理解为“聚合操作结果以与其存储的数据类型相同的方式返回”。我的假设是正确的。

如果是这样,我是否可以将返回值强制转换为long值或String

1 个答案:

答案 0 :(得分:2)

实际上,您的假设是正确的,即聚合操作结果返回存储该属性的相同数据类型。当然,这就是您看到错误消息“在有效范围之外”的原因:SMALLINT在-32768和32767签名之间,或0和65535无符号。对于此数据类型,8.0042892E7远远不够。

但是可以将结果转换为INT:

CAST(SUM(whatever) as INT) 

对于INT,有符号整数的范围是[-2147483648,2147483647],无符号​​的范围是[0,42949672]。