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

Jasper Report:impossibile ottenere il valore per il campo 'x' della classe 'org.postgresql.util.PGmoney'

Questo è uno dei tanti motivi per cui PostgreSQL money type è stato ritirato e dovrebbe essere evitato . Stranamente le versioni più recenti della stessa documentazione non mostrano l'avviso di ritiro ma io e altri non sono d'accordo e penso che il suo utilizzo dovrebbe essere scoraggiato.

Se possibile, modifica lo schema per utilizzare numeric invece, come numeric(17,2) se vuoi memorizzare solo centesimi interi o qualcosa di più preciso per valori intermedi. Avrai un incubo lavorando con money in HQL, al punto che persino BigDecimal di Java class (di solito usata per mappare numeric campi) è migliore nonostante la sintassi terribilmente goffa della sua aritmetica.

Farei un ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); e dimentica il money tipo esisteva se fossi in te.