Jasper Report: невозможно получить значение для поля 'x' класса 'org.postgresql.util.PGmoney'
Когда мне нужно получить некоторую информацию в таблице заказов, яшма не может разыграть удвоение от PGmoney. Я сначала искал в Google, но не получил результата.
Вы знаете, как это исправить?
Примечание: я использую базу данных PostgreSQL.
1 ответ
Это одна из нескольких причин, почему PostgreSQL money
Тип устарел и его следует избегать. Как ни странно, более новые версии той же документации не показывают предупреждение об устаревании, но я и другие не согласны с этим и считаю, что его использование не рекомендуется.
Если это вообще возможно, измените вашу схему на использование numeric
вместо этого, как numeric(17,2)
если вы хотите хранить только целые числа центов или что-то более точное для промежуточных значений. У вас будет кошмар времени работы с money
в HQL, до такой степени, что даже Java BigDecimal
класс (обычно используется для отображения numeric
поля) лучше, несмотря на ужасно неуклюжий синтаксис своей арифметики.
Я бы сделал ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING ( regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric );
и забыть money
Тип существовал на твоем месте.