如何使用SimpleJdbcInsert对枚举类型的列进行插入?

问题描述 投票:0回答:1

我必须使用 Jdbc 将一些记录插入到我的数据库中。其中一列“type”是自定义数据类型(我们称之为“test_type”),这导致插入失败。

目前,我有这个代码(简化):

    Map<String, Object> testRecord = new HashMap<String, Object>() {{
        put("name", "whatever");
        put("type", "planning");
    }};

    SimpleJdbcInsert insertTest = new SimpleJdbcInsert(jdbcTemplate)
        .withTableName("test_table")
        .usingColumns(testRecord.keySet().toArray(new String[0]))
        .usingGeneratedKeyColumns("id");

    Number testId = insertTest.executeAndReturnKey(testRecord);

出现此错误:

PreparedStatementCallback; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: column "type" is of type test_type but expression is of type character varying
  Hint: You will need to rewrite or cast the expression.

SQL 中的查询工作正常,即使只是将其作为字符串传递,所以我认为它在这里也可以工作。显然不是。

有谁知道我该如何解决这个问题?我尝试将“::test_type”附加到字符串中,但这似乎也不起作用。

java jdbc simplejdbcinsert
1个回答
0
投票

我们应该确保在保留映射之前应创建自定义数据类型列的映射值。

test_type t1 = new test_type();
    t1.setValue("planning");
    
    
    Map<String, Object> testRecord = new HashMap<String, Object>() {{
        put("name", "whatever");
        put("type", t1);
    }};
© www.soinside.com 2019 - 2024. All rights reserved.