enter image description here当我使用 JpaSpecificationExecutor 做 findAll 时,我发现了它 自动添加事务,以
启动sql设置自动提交 = 0;
我不想要它。
我测试 JpaRepository,执行相同的 select sql,但它不符合 设置自动提交 = 0;
但是 JpaSpecificationExecutor 有。
然后我断点它并发现有一个代理可以添加事务,但我不知道如何禁用它。
我确实设置了 defaultAutoCommit: true
我也设置了
datasource:
tomcat:
default-auto-commit: true
dbcp2:
default-auto-commit: true
连接池已经是defaultAutoCommit=true
没有帮助
所以我责怪 JpaSpecificationExecutor
@Repository
public interface GameRepository extends JpaRepository<GameEntity, Integer>, JpaSpecificationExecutor<GameEntity> {
List<GameEntity> findByName(String name);
}
public List<GameEntity> search(HttpServletRequest request) {
return mGameRepository.findAll(searchAction(request), new Sort(Sort.Direction.DESC, "id"));
}
最佳答案
事实证明,所有 CRUD 方法(CrudRepository 方法)默认都标记为事务性的。
但是我怎样才能取消标记呢?
关于mysql - 如何在没有事务的情况下使用 Spring-Jpa 中的 JpaSpecificationExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394147/