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ê.