【问题标题】:Spring Boot 1.2.5.RELEASE @TransactionSpring Boot 1.2.5.RELEASE @Transaction
【发布时间】:2015-10-05 02:40:19
【问题描述】:

升级到 Spring Boot 1.2.5 后,尝试执行以下查询时抛出异常。

原因:javax.persistence.TransactionRequiredException:执行更新/删除查询

@Modifying
@Transactional
@Query(value = "insert into some_table (some_id) VALUES (?1)", nativeQuery = true)
public void insertSomeTable(long some_id);

好像@Transactional 注释被忽略了。使用 spring boot 1.2.1 这可以工作。有什么想法吗?

【问题讨论】:

    标签: java spring spring-boot spring-data spring-data-jpa


    【解决方案1】:

    tl;博士

    您显然在使用 JTA 1.2 的 @javax.transaction.Transactional,但不幸的是,Boot 版本包含的 Spring Data 版本中破坏了对它的支持。解决方法是使用 Spring Framework 的@org.springframework.transaction.Transactional

    详情

    该 Spring Boot 版本中包含的 Spring Data 版本对之前存在的事务错误进行了修复。这有效地“修复”了由 Spring Data 控制的存储库上的事务处理。

    不幸的是,您显然正在使用对 JTA 1.2 的@Transactional 的支持切换。我已经修复了DATACMNS-732(包含在 Fowler SR2 和 Gosling RC1 中)并创建了一个ticket in Spring Framework 来改进库中的场景(由于需要复制一个类,我们基本上没有获得 JTA 1.2 支持)。

    【讨论】:

    • 这确实是问题所在。我正在使用 javax.transaction.Transactional。切换到@org.springframework.transaction.Transactional 解决了这个问题。谢谢!
    • 我遇到了完全相同的问题。非常感谢!
    猜你喜欢
    • 2015-11-07
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2018-02-23
    相关资源
    最近更新 更多