一、该问题的重现步骤是什么?
1.
官方SeataStorageApplication ,SeataOrderApplication两个服务配置好后 在 StorageServiceImpl 添加baseMapper.saveAffair(); @Override @Transactional(rollbackFor = Exception.class) public int deduct(String commodityCode, int count) { Storage storage = baseMapper.selectOne(Wrappers.query().lambda().eq(Storage::getCommodityCode, commodityCode)); if (storage.getCount() < count) { throw new RuntimeException("超过库存数,扣除失败!"); } baseMapper.saveAffair(); //这个 storage.setCount(storage.getCount() - count); return baseMapper.updateById(storage); }
insert into BASE_AFFAIR_SEATA (id, name) values (1589225269638524929, 'TEST' ) 无法回滚
2.
insert into BASE_AFFAIR_SEATA (id, name) values ('1589225269638524929', 'TEST' ) 可以回滚
3.sql
CREATE TABLE "OA_DATA"."BASE_AFFAIR_SEATA" ( "ID" NUMBER(20,0) NOT NULL ENABLE, "NAME" VARCHAR2(255), PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "OA_DATA" ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "OA_DATA"
二、你期待的结果是什么?实际看到的又是什么?
雪花算法生成的Long类型的ID可以回滚
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
3.0.1.RELEASE window10 oracle
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
扫一扫访问 Blade技术社区 移动端