PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Rapport Jasper :impossible d'obtenir la valeur du champ 'x' de la classe 'org.postgresql.util.PGmoney'

C'est l'une des nombreuses raisons pour lesquelles l'money de PostgreSQL le type était obsolète et devrait être évité . Bizarrement les nouvelles versions de la même documentation n'affichent pas l'avertissement d'obsolescence mais je et d'autres n'est pas d'accord avec cela et pense que son utilisation devrait être découragée.

Si possible, modifiez votre schéma pour utiliser numeric à la place, comme numeric(17,2) si vous ne souhaitez stocker que des cents entiers, ou quelque chose de plus précis pour les valeurs intermédiaires. Vous aurez un cauchemar à travailler avec de l'money en HQL, au point que même le BigDecimal de Java classe (généralement utilisée pour mapper numeric champs) est meilleur malgré la syntaxe terriblement maladroite de son w arithmétique.

Je ferais un ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); et oubliez l'money type existait si j'étais vous.