Jasper Report:无法获得类'org.postgresql.util.PGmoney'的字段'x'的值

时间:2012-09-04 11:08:58

标签: postgresql jasper-reports

当我需要在Order表中检索一些信息时,jasper无法从PGmoney转换为double。我先搜索谷歌,但没有结果。

你知道如何解决它吗?

注意:我使用的是PostgreSQL数据库。

1 个答案:

答案 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类型。