gpt4 book ai didi

spring - 将 Spring 的 KeyHolder 与以编程方式生成的主键一起使用

转载 作者:行者123 更新时间:2023-12-04 05:15:15 25 4
gpt4 key购买 nike

我正在使用 Spring 的 NamedParameterJdbcTemplate 执行插入到表中。该表在序列上使用 NEXTVAL 来获取主键。然后,我希望将此生成的 ID 传回给我。我正在使用 Spring 的 KeyHolder 实现,如下所示:

KeyHolder key = new GeneratedKeyHolder();
jdbcTemplate.update(Constants.INSERT_ORDER_STATEMENT, params, key);

但是,当我运行此语句时,我得到:
org.springframework.dao.DataRetrievalFailureException: The generated key is not of a supported numeric type. Unable to cast [oracle.sql.ROWID] to [java.lang.Number]
at org.springframework.jdbc.support.GeneratedKeyHolder.getKey(GeneratedKeyHolder.java:73)

有什么我想念的想法吗?

最佳答案

刚刚解决了一个类似的问题 - 对于 Oracle,您需要使用另一种方法(来自 NamedParameterJdbcOperations ) -

int update(String sql,
SqlParameterSource paramSource,
KeyHolder generatedKeyHolder,
String[] keyColumnNames)
throws DataAccessException

keyColumnNames 包含自动生成的列,在我的例子中只是 ["Id"]。否则你得到的只是ROWID。见 Spring doc详情。

关于spring - 将 Spring 的 KeyHolder 与以编程方式生成的主键一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com