我有一个代码,当一个过程返回错误时,我需要更新oracle中的一个表列。但是,在更新时(在catch块内),会发生以下错误:
org.springframework.dao.ConcurrencyFailureException: PreparedStatementCallback;SQL UPDATE TB_XPTO SET COLUMN_XPTO = XX WHERE ID_XPTO = ?;ORA-02091:事务重复;嵌套异常为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();
}有什么想法吗?
发布于 2021-04-01 23:41:39
谢谢你的回答,但对我来说很有效,在调用过程的方法中使用@Transactional。
https://stackoverflow.com/questions/66895741
复制相似问题