PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Relatório Jasper:não foi possível obter o valor do campo 'x' da classe 'org.postgresql.util.PGmoney'


Esta é uma das várias razões pelas quais o PostgreSQL dinheiro type foi obsoleto e deve ser evitado . Estranhamente versões mais recentes da mesma documentação não mostram o aviso de descontinuação mas eu e outros discordo disso e acho que seu uso deve ser desencorajado.

Se possível, altere seu esquema para usar numeric em vez disso, como numeric(17,2) se você deseja armazenar apenas centavos inteiros ou algo mais preciso para valores intermediários. Você terá um pesadelo trabalhando com dinheiro em HQL, a ponto de até o BigDecimal do Java classe (geralmente usada para mapear numeric campos) é melhor, apesar da sintaxe terrivelmente desajeitada de sua aritmética.

Eu faria um ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); e esqueça o dinheiro tipo existia se eu fosse você.