SpringBoot + SpringDataJPA中的事务不起作用

时间:2017-05-04 19:06:10

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

我有Spring服务。此服务从db获取现有订单并将其作为参数分配给用户。当订单ID等于4时,应该回滚该事务。不幸的是,它并没有发生。抛出RuntimeException,但更改将保存在数据库中。

这是我的配置:

@SpringBootApplication
@EnableTransactionManagement
public class TransactionsApplication {

    public static void main(String[] args) {
        SpringApplication.run(TransactionsApplication.class, args);
    }

}

服务:

@Transactional
void reconnect(Order o, User u) {
    o.setUser(u);
    orderRepository.save(o);

    if (o.getId() == 4L) {
        throw new RuntimeException("Transaction should be aborted.");
    }

}

我从REST控制器调用此方法:

@RequestMapping("/reconnect/{id}")
public Order reconnect(@PathVariable("id") Long id) {
    Order order = orderRepository.findOne(id);
    User user = userRepository.findOne(2L);
    mainService.reconnect(order, user);

    return order;
}

0 个答案:

没有答案