升级到 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,这是可行的。有什么想法吗?
最佳答案
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 支持)。
关于java - Spring Boot 1.2.5.RELEASE @Transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440865/