繁体   English   中英

Spring Data JPA事务不回滚

[英]spring data jpa transaction not rollbacking

我使用Spring数据JPA和添加插入2表时,一些事情发生,同时加入到第二个表中的第一笔交易是不是rollbacking和第一插件插入后immidiatally commiting

 @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = 
  Exception.class)
    public void addVehicleType(Map<String, Object> model)throws Exception {
        VehicleType     vehicleType     = null;
        VehicleStatus   vehicleStatus   = null;
        try {
            vehicleType         = (VehicleType) model.get("vehicleType");
            vehicleStatus       = (VehicleStatus) model.get("vehicleStatus");

            vehicleStatusRepository.save(vehicleStatus);

            vehicleTypeRepository.save(vehicleType);

        } catch (Exception e) {
            throw e;
        }

VehicleTypeRepository.java

public interface VehicleTypeRepository extends JpaRepository<VehicleType, Long> {


    @Override
    void delete(VehicleType role);

    long count();
}

如果使用mysql,则必须具有InnoDB Engine。 其次,问题可能出在您是否在本地PC上进行测试。 在my.ini中取消注释default_tmp_storage_engine = MYISAM; 创建新表时将使用的默认存储引擎; default-storage-engine = MYISAM; 如果skip-innodb启用default_tmp_storage_engine = MYISAM,则适用于MySQL 5.6 default_tmp_storage_engine

默认情况下,将事务设置为回滚状态的唯一异常是未经检查的异常(如RuntimeException)。

请注意,默认情况下,Spring Framework的事务基础结构代码仅在运行时未检查的异常的情况下才将事务标记为回滚。 也就是说,当抛出的异常是RuntimeException的实例或子类时。 (默认情况下,错误也会导致回滚。)从事务方法引发的检查异常不会导致事务回滚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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