在 Spring 启动时禁用自动提交无效

Disabling auto commit in Spring boot not worked

我设置了两个参数以通过 False 禁用自动提交,但在没有事务的实体上保存操作被提交。

spring.datasource.hikari.auto-commit=false
spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true

我测试该行为的代码片段是:

Log logEntity= new Log();
log.setId("123456789");
logRepository.save(logEntity);

执行此代码后 logEntity 保存在 table。

如何在 Spring 启动时禁用自动提交标志?

我找到了解决方案,我不得不在 EnableJpaRepositories 上禁用它,如下所示:

@EnableJpaRepositories(basePackages = {"org.company.product"},
                                       enableDefaultTransactions = false)

这并没有让我离开。显然 SimpleJpaRepository 的所有方法都用 @Transactional 注释,这是 CrudRepositoriesJpaRepository 的实现,因此在每次调用后提交。

参见:

或直接:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions