PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Báo cáo Jasper:không thể nhận giá trị cho trường 'x' của lớp 'org.postgresql.util.PGmoney'

Đây là một trong những lý do khiến PostgreSQL money type không được dùng nữa và nên tránh sử dụng . Kỳ lạ là các phiên bản mới hơn của cùng một tài liệu không hiển thị cảnh báo không dùng nữa nhưng tôi và những người khác không đồng ý với điều đó và nghĩ rằng việc sử dụng nó nên được khuyến khích.

Nếu có thể, hãy thay đổi giản đồ của bạn để sử dụng numeric thay vào đó, như numeric(17,2) nếu bạn chỉ muốn lưu trữ số xu hoặc thứ gì đó chính xác hơn cho các giá trị trung gian. Bạn sẽ gặp ác mộng về thời gian làm việc với money trong HQL, đến mức ngay cả BigDecimal của Java lớp (thường được sử dụng để ánh xạ numeric trường) tốt hơn mặc dù cú pháp số học vô cùng vụng về của nó.

Tôi sẽ thực hiện một ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric ); và quên money loại tồn tại nếu tôi là bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm phim có số lượng giải thưởng cao nhất trong năm nhất định - trùng lặp mã

  2. Thêm chỉ mục trên trường boolean

  3. Postgres - chuyển đổi một bảng trong cây JSON được nhóm lại

  4. lỗi pg_restore:vai trò XXX không tồn tại

  5. PostgreSQL:Làm thế nào để SUM thuộc tính bao gồm trường JSONB và giữ lại hình dạng bảng?