Java 使用SpringJDBC获取SQL插入后生成的密钥
在将新行插入数据库表后,我尝试检索生成的键。我试图用一个钥匙夹和一份准备好的声明来实现这一点,但得到了以下例外: org.springframework.dao.DataRetrievalFailureException: 生成的键不是受支持的数字类型。 无法将[oracle.sql.ROWID]强制转换为[java.lang.Number] 因此,JDBCTemplate的update方法似乎返回了行id,这不是我想要实现的。以下是我为此编写的代码:Java 使用SpringJDBC获取SQL插入后生成的密钥,java,sql,spring,oracle,jdbc,Java,Sql,Spring,Oracle,Jdbc,在将新行插入数据库表后,我尝试检索生成的键。我试图用一个钥匙夹和一份准备好的声明来实现这一点,但得到了以下例外: org.springframework.dao.DataRetrievalFailureException: 生成的键不是受支持的数字类型。 无法将[oracle.sql.ROWID]强制转换为[java.lang.Number] 因此,JDBCTemplate的update方法似乎返回了行id,这不是我想要实现的。以下是我为此编写的代码: String sql = Sql.CREA
String sql = Sql.CREATE_VORGANG;
final KeyHolder holder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection)
throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, fuehrungskraftPersonalnummer);
ps.setString(2, mitarbeiterPersonalnummer);
ps.setString(3, statusId);
return ps;
}
}, holder);
该表使用一个触发器,该触发器在每次插入新行时生成一个具有序列的新值。该值将插入表的列ID_VORGANG中
我是不是漏掉了什么明显的东西
编辑:
已执行的SQL语句:
Insert into TRAL_VORGANG (FK_PERSONALNUMMER, MA_PERSONALNUMMER, STATUS_ID) values (?, ?, ?)
这是:
long id = holder.getKey().longValue();
添加sql语句。