使用 vertx-jdbc 将 BigDecimal 插入数据库
insert BigDecimal to database with vertx-jdbc
我正在使用 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)
您可以将 BigDecimal
转换为 String
,然后使用 CAST
函数:
INSERT INTO test (i) VALUES (CAST('3.235' AS DECIMAL))
并回读:
SELECT CAST(i AS TEXT) from test
我正在使用 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)
您可以将 BigDecimal
转换为 String
,然后使用 CAST
函数:
INSERT INTO test (i) VALUES (CAST('3.235' AS DECIMAL))
并回读:
SELECT CAST(i AS TEXT) from test