Spring 多个更新查询时的@Transactional 行为

Spring @Transactional behaviour in case of multiple update queries

我有一个应该执行多个更新的方法,并且想确保如果一个更新失败则没有更新提交到数据库,代码如下:

    private void updateStatuses(List<Status> statuses, String docId) {
        statuses.forEach(status-> {
            Long nextVersionNumber = Long.parseLong(status.getRecordVersionNbr()) + 1;
            getJdbcTemplate().update(
                    UPDATE_FUNDS_TRANSFER_DOC_ID_SQL,
                    nextVersionNumber,
                    docId,
                    status.getStatusId());
        });
    }

我想用org.springframework.transaction.annotation注释这个方法。 @Transactional,这对我有用吗?我应该指定一些额外的参数吗?

它会非常有效! :)

我希望您已经在 Spring 配置中配置了事务管理器。

如果你想指定传播和回滚那么你可以这样做:

@Transactional(propagation=Propagation.REQUIRED, rollbackFor=DAOException.class)