一、该问题的重现步骤是什么?
SpringUtil.publishEvent 发布事件, onApplicationEvent 订阅后续执行的代码mysql事务失效,且 tenantId 不会拼接到sql中。但是通过 AuthUtil.getTenantId 可以获取到租户Id
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
4.2.0
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
拼接租户ID问题已经解决,目前mysql事务不起作用。
事务相关的代码是怎么写的,发一下看看,发关键部分就行
事务注解
事件订阅
2024-12-04 13:12:20.251 INFO 45198 --- [nio-8202-exec-7] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : update bill_doc set `state` = 0, `audit_time` = null, `audit_user` = null where (id = 1863913145702961153) and tenant_id = '000000' Execute Time: 99.193ms ============== Sql End ============== 2024-12-04 13:12:41.829 INFO 45198 --- [nio-8202-exec-7] c.d.p.e.s.ItemInventorySubscriber : [订阅] 收到单据出入库事件, 单据Id:1863913145702961153, 操作类型:反审核 2024-12-04 13:12:46.008 INFO 45198 --- [nio-8202-exec-7] o.s.core.mp.plugins.SqlLogInterceptor : 2024-12-04 13:13:01.007 INFO 45198 --- [nio-8202-exec-7] o.s.core.mp.plugins.SqlLogInterceptor : ============== Sql Start ============== Execute SQL : update inventory set `category_id` = 1851586292367704065, `item_name` = '品名:', `sku_cost_price` = 333.00, `season_ids` = 'spring', `stock_num` = `stock_num` + -5 where (id = 1864136016849248258) and tenant_id = '000000' Execute Time: 37.772ms ============== Sql End ==============
这是执行的日志,同一个线程中运行的 [nio-8202-exec-7]