sql >> Database teknologi >  >> RDS >> PostgreSQL

Jasper-rapport:kan ikke få værdi for felt 'x' i klassen 'org.postgresql.util.PGmoney'

Dette er en af ​​flere grunde til, at PostgreSQL penge typen blev udfaset og bør undgås . Mærkeligt nok viser nyere versioner af den samme dokumentation ikke advarslen om udfasning men jeg og andre er uenig i det og mener, at det bør frarådes at bruge det.

Hvis det overhovedet er muligt, skal du ændre dit skema til at bruge numerisk i stedet som numeric(17,2) hvis du kun ønsker at gemme hele tal cents, eller noget mere præcist for mellemværdier. Du vil have et mareridt af en tid, når du arbejder med penge i HQL, til det punkt, hvor selv Javas BigDecimal klasse (bruges normalt til at kortlægge numerisk fields) er bedre på trods af den frygtelig klodsede syntaks i dens aritmetik.

Jeg ville lave en ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); og glem pengene type eksisterede, hvis jeg var dig.




  1. Returner alle historiske poster for konti med ændring i specifik associeret værdi

  2. Sådan inkluderes ekskluderede rækker i RETURNING from INSERT ... ON CONFLICT

  3. MySQL-relationer

  4. Hvordan man gør null lig med null i oracle