Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java字符对象值插入Oracle CHAR(1)列时出错_Java_Spring_Character_Jdbctemplate - Fatal编程技术网

将Java字符对象值插入Oracle CHAR(1)列时出错

将Java字符对象值插入Oracle CHAR(1)列时出错,java,spring,character,jdbctemplate,Java,Spring,Character,Jdbctemplate,我使用SpringjdbcTemplate.update(stringsql,Object[]args)在Oracle数据库上执行准备好的insert语句。其中一个对象是包含值“Y”的Character对象,目标列是CHAR(1)类型,但我收到一个 java.sql.SQLException: Invalid column type 例外 我已经对它进行了前后调试,毫无疑问,正是这个特定的对象导致了这个问题。当省略此字符对象时,插入将按预期执行 我还可以输出sql和Object[]值,将sql

我使用Spring
jdbcTemplate.update(stringsql,Object[]args)
在Oracle数据库上执行准备好的insert语句。其中一个对象是包含值“Y”的Character对象,目标列是CHAR(1)类型,但我收到一个

java.sql.SQLException: Invalid column type
例外

我已经对它进行了前后调试,毫无疑问,正是这个特定的对象导致了这个问题。当省略此字符对象时,插入将按预期执行

我还可以输出sql和Object[]值,将sql复制到sqldeveloper中,用对象的实际值替换值占位符
(?)
,插入将正常工作

sql(经过模糊处理以保护罪犯):

对象值:

values[0] = [123]
values[1] = [Some String]
values[2] = [2012-04-19]
values[3] = [Y]
该组合在sql developer中手动运行,效果很好:

INSERT INTO SCHEMA.TABLE(NUMBER_COLUMN,VARCHAR_COLUMN,DATE_COLUMN,CHAR_COLUMN) VALUES (123,'Some String','19-Apr-2012','Y');
准备好的语句sql本身是基于数据传输对象中包含的非空实例变量对象动态生成的(我们希望数据库处理默认值的生成),因此我不能接受任何建议我只是重新编写sql或插入例程的答案

有没有人遇到过这种情况,可以向我解释发生了什么以及如何修复它?令人沮丧的是,我似乎无法将Character对象插入CHAR(1)字段。任何帮助都将不胜感激


诚恳地说,Longtime Lower First time Poster没有接受字符值的PreparedStatement.setXxx(),Oracle文档声明所有JDBC字符类型都映射到Java字符串。另外,请参阅,其中不包括从Java
char
Character
到JDBC类型的映射

您必须将该值转换为字符串

INSERT INTO SCHEMA.TABLE(NUMBER_COLUMN,VARCHAR_COLUMN,DATE_COLUMN,CHAR_COLUMN) VALUES (123,'Some String','19-Apr-2012','Y');