简体   繁体   中英

spring-boot ConcurrencyFailureException oracle

I have a code, that when an error returns from a procedure, I need to update a table column in oracle. However, at the time of the update (inside the catch block), the following error occurs:

org.springframework.dao.ConcurrencyFailureException: PreparedStatementCallback; SQL [UPDATE TB_XPTO SET COLUMN_XPTO = XX WHERE ID_XPTO =?]; ORA-02091: transação repetida; nested exception is java.sql.SQLTransactionRollbackException: ORA-02091:

My code:

                 try {
                                             
                     jdbcTemplate.update ("call PROCEDURE_XPTO(?)", ID_XPTO);                

                 } catch (Exception e) {
                    jdbcTemplate.update("UPDATE TB_XPTO SET COLUMN_XPTO = XX WHERE ID_XPTO = ?", idXpto);
                     
                 }

My data source Config class

@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();
}

Any idea?

thanks for your answer, but worked for me, using @Transactional, in the method that calls the procedure.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM