PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jasper Report:nie można uzyskać wartości dla pola „x” klasy „org.postgresql.util.PGmoney”

Jest to jeden z kilku powodów, dla których PostgreSQL pieniądze typ został przestarzały i należy go unikać . Dziwne nowsze wersje tej samej dokumentacji nie wyświetlają ostrzeżenia o wycofaniu ale ja i inni nie zgadzam się z tym i uważam, że należy odradzać jego używanie.

Jeśli to możliwe, zmień schemat tak, aby używał numeric zamiast tego, jak numeric(17,2) jeśli chcesz przechowywać tylko całe centy lub coś bardziej precyzyjnego dla wartości pośrednich. Będziesz miał koszmar związany z pracą z pieniędzmi w HQL, do tego stopnia, że ​​nawet BigDecimal Javy klasa (zwykle używana do mapowania numeric pola) jest lepszy pomimo okropnie niezgrabnej składni jego arytmetyki.

Zrobiłbym ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); i zapomnij o pieniądze typ istniał, gdybym był tobą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Jak uciec '?

  2. Jak tworzyć i usuwać bazy danych i tabele w PostgreSQL

  3. Najlepsze narzędzia do tworzenia kopii zapasowych dla PostgreSQL

  4. PostgreSQL:count() czy zachować licznik?

  5. Wyłącz sprawdzanie kluczy obcych PostgreSQL dla migracji