Я работаю с драйвером JDBC Postgres (postgresql-42.2.5.jar) и СУБД PostgreSQL 10.6.
У меня есть набор результатов, и 3 его столбца имеют тип money
(на уровне БД).И у меня есть объект метаданных набора результатов.
Когда тип столбца - деньги, метод драйвера getColumnType () возвращает 8 для столбцов money
.
Я проверил, значение 8 означает Double.
Но значение, возвращаемое из БД, напоминает $1,312,536.00
или, скажем, 1,312,536.00
.
Так что, когда я пытаюсь вызвать rs.getObject () для индекса этого столбца, он выдает ошибку:
org.postgresql.util.PSQLException: Bad value for type double: 1,312,536.00
at org.postgresql.jdbc.PgResultSet.toDouble(PgResultSet.java:2934)
at org.postgresql.jdbc.PgResultSet.getDouble(PgResultSet.java:2323)
at org.postgresql.jdbc.PgResultSet.internalGetObject(PgResultSet.java:194)
at org.postgresql.jdbc.PgResultSet.getObject(PgResultSet.java:2572)
at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
at org.apache.commons.dbcp2.DelegatingResultSet.getObject(DelegatingResultSet.java:733)
Таким образом, кажется, что драйвер не может общаться со своей собственной БД, когда онприходит к типу денег.
Мне кажется, это ошибка.
Кажется, что в PG-JDBC у них есть ошибка, открытая для этого
https://github.com/pgjdbc/pgjdbc/issues/100
но онизакрыл его из-за отсутствия ответа вместо исправления.
Есть идеи, как это решить?
Это действительно ошибка или я что-то упустил?