当我需要在Order表中检索一些信息时,jasper无法从PGmoney转换为double。我先搜索谷歌,但没有结果。
你知道如何解决它吗?
注意:我使用的是PostgreSQL数据库。
答案 0 :(得分:4)
这是PostgreSQL money
类型was deprecated and should be avoided的几个原因之一。奇怪地newer versions of the same documentation don't show the deprecation warning,但我and others不同意这一点,并认为不鼓励使用它。
如果可能,请更改您的架构以使用numeric
,例如numeric(17,2)
,如果您只想存储整数美分,或者更精确的中间值。你会在HQL中使用money
做一个噩梦,甚至连Java的BigDecimal
类(通常用于映射numeric
字段)都更好,尽管语法非常笨拙它的算术。
如果我是你,我会执行ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
并忘记money
类型。