【发布时间】:2016-04-27 08:09:25
【问题描述】:
我们使用spring框架jdbcTemplate插入数据如下:
Object[] params = {"978","tour"};
jdbcTemplate.update("insert into test1 values (?,?)", params);
但这给出了例外:
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;错误的 SQL 语法 [插入 test1 值 (?,?)];嵌套异常是 org.postgresql.util.PSQLException:错误:列“id”是整数类型,但表达式的类型是字符变化 错误:列“id”是整数类型,但表达式是字符变化类型
这适用于通过隐式类型转换的 Oracle 数据库,但 postgres 似乎不能那样工作。
这可能是 postgres 驱动程序的问题吗?
一种解决方法是显式转换:
insert into test1 values (?::numeric ,?)
但是有没有更好的方法来进行转换,因为这似乎不是一个好的解决方案,因为有很多查询需要修改,而且还可能存在其他此类转换问题。
是否可以在 DB 级别设置一些参数来执行自动转换?
【问题讨论】:
标签: database postgresql casting jdbctemplate