【发布时间】:2018-03-10 01:00:14
【问题描述】:
我的业务层中有一个用@Transaction 注释的方法。它插入到两个不同的实体中。
@Transaction
void method (){
try{
service1.insertOne();
service2.insertTwo();
}
catch(Exception ex) {
// log exception
}
}
当验证失败时,这两种方法都会抛出一个自定义异常。
我面临的问题是如果 insertOne 成功并且 insertTwo 抛出验证异常,则事务不会回滚。即正在插入 insertOne 中的数据。
【问题讨论】:
-
您是否配置了 XA 数据源?您是否在类路径上有实际的事务管理器实现,例如 bitronix?除非您配置了数据源或消息总线,否则事务将无法工作...
-
我使用默认的spring boot jpa配置和hibernate。
-
它将两次写入视为单独的事务,除非您配置为全局 XA 事务,这意味着使用 Bitronix 或类似的。默认的 JPA TM 仅支持单个非全局事务。
标签: spring-data-jpa transactional