Spring Boot 1.2.5.RELEASE @Transaction

时间:2015-07-15 20:53:10

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

升级到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注释。随着春季启动1.2.1这是有效的。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

TL;博士

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

详细

Spring Boot版本附带的Spring Data版本为之前存在的事务错误提供了修复程序。这有效地解决了#34;存储库上的事务处理由Spring Data控制。

不幸的是,您正在使用的JTA 1.2 @Transactional支持的切换。我已修复DATACMNS-732(包括在Fowler SR2和Gosling RC1中)并创建了ticket in Spring Framework以改善库中的场景(我们基本上没有因为没有获得JTA 1.2支持而受到影响需要复制一个类。)