我正在使用vertx-jdbc-client(http://vertx.io/docs/vertx-jdbc-client/java/)进行数据库连接。这适用于除 BigDecimal 之外的每种数据类型。
在我的数据库中,类型为 decimal(13,2),在Java中我使用 BigDecimal 数据类型。我只想阅读&使用vertx-jdbc-client更新此列。
不幸的是我得到以下异常:
SEVERE: Unhandled exception
java.lang.IllegalStateException: Illegal type in JsonObject: class java.math.BigDecimal
at io.vertx.core.json.Json.checkAndCopy(Json.java:215)
at io.vertx.core.json.JsonArray.add(JsonArray.java:444)
查看io.vertx.core.json.Json.checkAndCopy告诉我框架不支持BigDecimal:
@SuppressWarnings("unchecked")
static Object checkAndCopy(Object val, boolean copy) {
if (val == null) {
// OK
} else if (val instanceof Number && !(val instanceof BigDecimal)) {
// OK
} else if (val instanceof Boolean) {
...
}
我用谷歌搜索了一下,但没有找到解释为什么不支持。
有解决方法吗?
使用以下版本: (Java 8,Vertx 3.5.0,Postgres 9.6)
答案 0 :(得分:1)
您可以将BigDecimal
转换为String
,然后使用CAST
功能:
INSERT INTO test (i) VALUES (CAST('3.235' AS DECIMAL))
并回读:
SELECT CAST(i AS TEXT) from test