不同的接口掉同一個manager去save同一個表,無法插入行信息,@Transactional

现在要往我自己建的的表里插入一条数据,已经用manager封好了去调用rep,rep去调用bo转实体类,然后用mybatisplus去save实体类。
1.用controller调用usecase,调用service,调用manager,就可以成功插入这条数据
2.在另一个service里调用checksupport调用这个manager,就无法插入这条数据,报错:不存在该数据表(这个数据表应该在legal数据库中,但是报错报的是bpm数据库中不存在这个表)

原因:
2中的service中,调用checksupport的方法上面使用了注解@Transactional(rollbackFor = Exception.class),如果注释掉,就可以正常插入了。
原理是mysql的事务
但是显然不能通过注释这个注解的方式来正常调用,因为注释掉会影响其他的东西。

解决方案:
https://blog.csdn.net/qq_45126647/article/details/118091172

发现还是不行,参考上面的文章最终解决方案:
因为manager层调用的rep层,但是mybatisplus提供的save方法,是让rep层实现IService接口,从而提供了mybatisPlus的各种服务,rep层是mybatisplus的实现类,在实现类上加注解,不会作用到父类上,但是父类源码不能更改。所以解决方案有两种:
1.不使用mybatisplus的save方法,自己写一个
2.把@DS(‘legal’)和@Transactional(propagation = Propagation.REQUIRES_NEW)放到manager层中,调用rep的save的方法的方法上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值