I m 使用 Spring jdbcTemplate. update (String sql, object[] args)
执行甲骨文数据库中的预写插入语句。其中对象之一是含有值Y的字符对象,目标列为 CHAR(1) 类型,但我正在接收
java.sql.SQLException: Invalid column type
例外。
我向后和向前调试了这个选项, 毫无疑问, 引发问题的就是这个特定对象。 当此字符对象被省略时, 插入的执行符与预期的相同 。
我还可以输出 sql 值和对象值, 将 sql 复制为 sql 开发器, 将值占位符 < code> (? s) 替换为对象的实际值, 插入将正常工作 。
誓以保护犯罪的人,
INSERT INTO SCHEMA.TABLE(NUMBER_COLUMN,VARCHAR_COLUMN,DATE_COLUMN,CHAR_COLUMN) VALUES (?,?,?,?);
对象值 :
values[0] = [123]
values[1] = [Some String]
values[2] = [2012-04-19]
values[3] = [Y]
在 sql 开发器中手工操作的组合, 效果很好:
INSERT INTO SCHEMA.TABLE(NUMBER_COLUMN,VARCHAR_COLUMN,DATE_COLUMN,CHAR_COLUMN) VALUES (123, Some String , 19-Apr-2012 , Y );
准备的语句 sql 本身是动态生成的, 其依据是数据传输对象( 我们希望数据库能处理默认值的生成) 中包含的非核实例变量对象( 因此, 我不能接受任何显示我只修改 sql 或插入常规的答案 ) 。
有谁遇到过这种情况,能向我解释一下发生了什么以及如何修补它吗? 令人沮丧的是,我似乎无法将字符对象插入CHAR(1)字段。 任何帮助都将非常感激。
真诚的长时期卢克尔首次招贴画