数据库的订单表不会回滚

来源:14-12 章节思考题

音乐流星

2022-06-07

老师,我这研究了很多天。1.41-1.51,每个版本都测试了。
无论是怎么抛异常, 这个订单表都会生成一条订单, 不会回滚删除。
seata相关的表和 undo_log都是有任何内容。 这应该怎么排查呢?
数据源代理的问题吗?

@GlobalTransactional(rollbackFor = Exception.class)
public TableId createOrder(OrderInfo orderInfo) {
	//...
	// 2. 创建订单
	Order newOrder = orderDao.save(
			new Order(
					AccessContext.getLoginUserInfo().getId(),
					orderInfo.getUserAddressId(),
					JSON.toJSONString(orderInfo.getOrderItems())
			)
	);
	if (1 != 2) {
		throw new RuntimeException("直接抛异常测试回滚----------");
	}
	...
写回答

1回答

张勤一

2022-06-07

同学你好:

    这其实和版本的关系不大,看起来就是因为数据源代理不成功导致的,因为 Seata 其实就是 AOP,帮助我们做了 try catch,所以,还是好好看看数据源配置的地方。

1
0

Spring Cloud / Alibaba 微服务架构实战

从架构设计到开发实践,手把手实现

1210 学习 · 674 问题

查看课程