使用 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