【发布时间】:2021-06-27 22:24:47
【问题描述】:
我有一个代码,当程序返回错误时,我需要更新 oracle 中的表列。但是,在更新时(catch 块内),出现以下错误:
org.springframework.dao.ConcurrencyFailureException: PreparedStatementCallback; SQL [UPDATE TB_XPTO SET COLUMN_XPTO = XX WHERE ID_XPTO = ?]; ORA-02091: transação repetida ;嵌套异常是 java.sql.SQLTransactionRollbackException: ORA-02091:
我的代码:
try {
jdbcTemplate.update ("call PROCEDURE_XPTO(?)", ID_XPTO);
} catch (Exception e) {
jdbcTemplate.update("UPDATE TB_XPTO SET COLUMN_XPTO = XX WHERE ID_XPTO = ?", idXpto);
}
我的数据源配置类
@Bean
public DataSourceBuilder<?> dataSourceBuilder(Environment springEnvironment) {
DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("oracle.jdbc.OracleDriver");
dataSourceBuilder.url("jdbc:oracle:thin:@//server:1521/database.com.br");
dataSourceBuilder.username("user");
dataSourceBuilder.password("pass");
return dataSourceBuilder;
}
@Bean
public DataSource getDataSource(DataSourceBuilder<?> dataSourceBuilder) {
return dataSourceBuilder.build();
}
有什么想法吗?
【问题讨论】:
-
错误似乎很明显:ORA-02291: integrity constraint violated-parent key not found:您正在尝试更新没有匹配父项的子项,如外键约束所定义。
-
您好,感谢您的回答,但在调用过程的方法中使用 @Transactional 为我工作
标签: java oracle spring-boot spring-transactions