我必须使用 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”附加到字符串中,但这似乎也不起作用。
我们应该确保在保留映射之前应创建自定义数据类型列的映射值。
test_type t1 = new test_type();
t1.setValue("planning");
Map<String, Object> testRecord = new HashMap<String, Object>() {{
put("name", "whatever");
put("type", t1);
}};