PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Jasper-Bericht:Wert für Feld „x“ der Klasse „org.postgresql.util.PGmoney“ kann nicht abgerufen werden

Dies ist einer der vielen Gründe, warum PostgreSQL money type war veraltet und sollte vermieden werden . Seltsamerweise zeigen neuere Versionen der gleichen Dokumentation keine Verfallswarnung aber ich und andere stimme dem nicht zu und denke, dass von seiner Verwendung abgeraten werden sollte.

Wenn möglich, ändern Sie Ihr Schema so, dass es numeric verwendet stattdessen wie numeric(17,2) B. nur ganzzahlige Cents speichern wollen, oder etwas genauer für Zwischenwerte. Sie werden einen Albtraum haben, wenn Sie mit money arbeiten in HQL, bis zu dem Punkt, an dem sogar Javas BigDecimal Klasse (normalerweise verwendet, um numeric abzubilden Felder) ist trotz der schrecklich ungeschickten Syntax der itsw-Arithmetik besser.

Ich würde ein ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); und vergiss das money Typ existierte, wenn ich Sie wäre.