Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Postgres-如何将sum(bigint)类型转换为bigint?_Hibernate_Postgresql_Biginteger_Bigdecimal_Bigint - Fatal编程技术网

Hibernate Postgres-如何将sum(bigint)类型转换为bigint?

Hibernate Postgres-如何将sum(bigint)类型转换为bigint?,hibernate,postgresql,biginteger,bigdecimal,bigint,Hibernate,Postgresql,Biginteger,Bigdecimal,Bigint,我有一个Postgres 8.2表,表中的列定义为bigint数据类型 当我不使用sumcolumn时,返回类型是数字。我想强制类型强制将求和转换为bigint,因为我确信结果不会超过bigint的最大值。我可以通过这样的子查询实现这一点: 选择T.big_col_total::bigint from选择sumbig_col作为big_total from big_table T 有没有一种不用子查询就可以做到这一点的方法,也就是说,我可以直接键入总和吗?我尝试了两种方法,都导致了语法错误 背景

我有一个Postgres 8.2表,表中的列定义为bigint数据类型

当我不使用sumcolumn时,返回类型是数字。我想强制类型强制将求和转换为bigint,因为我确信结果不会超过bigint的最大值。我可以通过这样的子查询实现这一点:

选择T.big_col_total::bigint from选择sumbig_col作为big_total from big_table T

有没有一种不用子查询就可以做到这一点的方法,也就是说,我可以直接键入总和吗?我尝试了两种方法,都导致了语法错误

背景:我正在从Hibernate运行此查询,因此将查询返回的数据类型限制为BigInteger对我来说很重要。在Java端,bigint+bigint=numeric BigDecimal

只需使用:

select sum(big_col)::bigint as total 
from big_table

您应该尽快升级到受支持的版本,例如9.x

我从Hibernate运行上述查询时遇到此错误。org.hibernate.QueryException:没有设置所有命名参数:[:bigint,:]如果我将sumbig_col::bigint更改为sumbig_col::bigint,并在b/w中使用空格,我仍然会得到相同的错误。Hibernate似乎在想:bigint是命名参数,你知道如何解决这个问题吗?谢谢@svhyd:尝试将castsumbig_col改为bigint。它似乎失败了,因为冒号:在Hibernate中有特殊的含义。您将不得不转义字符或使用提供的替代语法。谢谢,这很有效!从big_表中选择castsumbig_col作为bigint作为总计