【问题标题】:error message when calling update() function : The conversion from UNKNOWN to UNKNOWN is unsupported调用 update() 函数时的错误消息:不支持从 UNKNOWN 到 UNKNOWN 的转换
【发布时间】:2022-02-03 06:14:50
【问题描述】:

下面的函数应该在使用NamedJdbcTemplate时执行插入数据库:

public int create(Customer entity) {
    NamedParameterJdbcTemplate template = getDataSource(TENANT, ENVIRONMENT);
    MapSqlParameterSource paramMap = new MapSqlParameterSource()
            .addValue("compid", entity.getCompID())
            .addValue("tradercode", entity.getTraderCode())
            .addValue("title", entity.getTitle())
            // ... other params
    return template.update(INSERT_QUERY, paramMap);
}

但是我在调​​用时收到此错误消息

com.microsoft.sqlserver.jdbc.SQLServerException:不支持从 UNKNOWN 到 UNKNOWN 的转换。

【问题讨论】:

    标签: sql sql-server spring-boot spring-jdbc


    【解决方案1】:

    驱动程序无法转换某些参数。您可以尝试一一评论以找到问题。

    通常,将值作为字符串传递就可以了:

    .addValue("tradercode", entity.getTraderCode().toString())
    

    【讨论】:

      【解决方案2】:

      在尝试更多之后,通过在MapSqlParameterSource 中提供sqlType 似乎可以解决问题:

      public int create(Customer entity) {
          NamedParameterJdbcTemplate template = getDataSource(TENANT, ENVIRONMENT);
          MapSqlParameterSource paramMap = new MapSqlParameterSource()
                  .addValue("compid", entity.getCompID(), Types.VARCHAR)
                  .addValue("tradercode", entity.getTraderCode(), Types.VARCHAR)
                  .addValue("title", entity.getTitle(), Types.VARCHAR)
                  // ... other params
          return template.update(INSERT_QUERY, paramMap);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2023-01-22
        • 1970-01-01
        • 2017-12-23
        相关资源
        最近更新 更多