gpt4 book ai didi

spring - 添加@EnableBatchProcessing 会导致 TransactionRequiredException 错误

转载 作者:行者123 更新时间:2023-12-03 19:35:34 24 4
gpt4 key购买 nike

我有一个 Spring Boot 2 应用程序(仍处于开发阶段)与 JPA、hibernate 等一起运行良好。我现在进行的单一持久性测试通过正常。

但是,当我添加 @EnableBatchProcessing到主引导类(用 @SpringBootApplication 注释的那个)我在 Maven 构建的测试阶段收到以下错误:

  • javax.persistence.TransactionRequiredException : 没有交易
    进展

  • 如果我只是删除此注释,测试将再次成功运行。

    我在某处读到 spring Batch 使用的事务管理器与用于 JPA 持久性的事务管理器不同。

    我该如何解决这个问题?

    提前致谢。

    最佳答案

    这很简单。 @EnableBatchProcessing注释使 Spring Batch 自动注册一个事务管理器以用于其事务,并且您的 JpaTransactionManager永远不会被使用。
    原因:
    默认情况下,@EnableBatchProcessing触发创建 DataSourceTransactionManager .该事务管理器对导致您所看到的问题的 JPA/Hibernate 一无所知。

    解决方案:
    现在,如果要更改 Spring Batch 用于事务的事务管理器,则必须实现接口(interface) BatchConfigurer .有一个链接到 example用户在哪里执行此操作。他正在做的是将事务管理器切换到他自己的事务管理器。

    关于spring - 添加@EnableBatchProcessing 会导致 TransactionRequiredException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49583662/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com