2

我使用SimpleJdbcInsert类的,指定甲骨文序列中SimpleJdbcInsert类对象从Oracle序列生成密钥

SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(dataSource).withTableName(TABLE_NAME).withSchemaName(SCHEMA_NAME); 

Map<String, Object> namedParameterMap = new HashMap<String, Object>(); 
namedParameterMap.put("ID", "MYSEQ.NEXTVAL"); 
namedParameterMap.put("COLUMN1NAME",obj1.getColumn1Value()); 
namedParameterMap.put("COLUMN2NAME", obj1.getColumn2Value()); 

simpleJdbcInsert.withoutTableColumnMetaDataAccess().execute(namedParameters); 

但它引发的错误只有ID列,其他列做工精细,我证实了注释掉的ID列。

java.lang.NumberFormatException: null 

我检查了我的Oracle序列,它工作正常。我查了很多博客,但无法找到正在使用SimpleJdbcInsert的Oracle序列的正确博客。

回答

0

这是因为jdbcTemplate试图将"MYSEQ.NEXTVAL"解析为lang,这是ID的数据类型。您不能将SQL语句作为命名参数发送。