PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Laporan Jasper:tidak dapat memperoleh nilai untuk bidang 'x' dari kelas 'org.postgresql.util.PGmoney'

Ini adalah salah satu dari beberapa alasan PostgreSQL money ketik tidak digunakan lagi dan harus dihindari . Anehnya versi yang lebih baru dari dokumentasi yang sama tidak menunjukkan peringatan penghentian tapi saya dan lainnya tidak setuju dengan itu dan berpikir penggunaannya harus dihentikan.

Jika memungkinkan, ubah skema Anda untuk menggunakan numeric sebagai gantinya, seperti numeric(17,2) jika Anda hanya ingin menyimpan sen bilangan bulat, atau sesuatu yang lebih tepat untuk nilai menengah. Anda akan mengalami mimpi buruk saat bekerja dengan money di HQL, ke titik di mana bahkan Java BigDecimal class (biasanya digunakan untuk memetakan numeric bidang) lebih baik meskipun sintaks aritmatikanya sangat canggung.

Saya akan melakukan ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); dan lupakan money tipe ada jika saya jadi Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instal PostgreSQL di Ubuntu 20.04

  2. QT5:Gagal memuat driver psql di windows

  3. Apakah Django mengindeks kunci Autofield/ID di PostgreSQL?

  4. Temukan nama host dan port menggunakan perintah PSQL

  5. Bagaimana saya bisa memasukkan data umum ke tabel temp dari skema yang berbeda?