在 SimpleJdbcInsert 对象中指定 Oracle Sequence 以从 Oracle Sequence 生成密钥

SyP*_*rth 5 oracle spring-jdbc jdbctemplate simplejdbcinsert database-sequence

我使用 SimpleJdbcInsert 作为,

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);
Run Code Online (Sandbox Code Playgroud)

但它仅对 ID 列引发错误,其他列工作正常,我通过注释掉 ID 列来确认这一点。

java.lang.NumberFormatException: null
Run Code Online (Sandbox Code Playgroud)

我检查了我的 Oracle 序列,它工作正常。我检查了很多博客,但找不到使用 Oracle 序列和 SimpleJdbcInsert 的合适博客。

knu*_*ten 2

这是因为 jdbcTemplate 尝试解析"MYSEQ.NEXTVAL"为 long,这是ID. 您不能将 SQL 语句作为命名参数发送。