【问题标题】:spring data jpa transaction not rollbackingspring data jpa事务不回滚
【发布时间】:2018-08-07 01:52:43
【问题描述】:

我正在使用 Spring Data Jpa 并在发生某些事情时添加到 2 个表中,同时将第一个事务添加到第二个表中,第一个事务没有回滚 并且第一个插入是 在插入之后立即提交

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

【问题讨论】:

  • 你的仓库是什么样子的?
  • 公共接口 VehicleTypeRepository extends JpaRepository { @Override void delete(VehicleType role);长计数(); }
  • 你在用spring boot吗?
  • @SimonMartinelli 是的,我正在使用弹簧靴
  • Manish,你能告诉我使用方法 addVehicleType() 调用的类层次结构吗?例如:ManagedBean A -> bean spring service B1 -> bean spring service B2 -> bean spring B3 -> 带有注解的method()。在这种情况下,@Transactional 注释必须在 bean spring B1 上,而不是在 bean spring B3 上。

标签: spring-data-jpa spring-transactions


【解决方案1】:

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

【讨论】:

  • 你是对的,在将表引擎更改为 innodb 并将方言属性编辑为 MySQLInnoDBDialect 后,存储引擎出现问题,它现在正在工作
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2018-12-30
    • 2015-10-25
    • 2018-05-24
    相关资源
    最近更新 更多