在一个类中打断点的时候报了一个异常,这个异常,但是一直找不到,直到我在类中调用另外一个方法的时候,看到该方法里面用了 this 调用了 mybatis-plus 的 Api 去操作数据库,而最外层的方法却添加了 @Transactional(rollbackFor = Exception.class) 注解,根据 spring 的事务传播机制,被调用的方法没有添加事务,那么就会在根据外层的事务添加一个一样的事务,而 Transactional 添加事务是经过 spring 动态代理 生成一个代理类去操作数据库,而 this 的使用是不会走 spring 代理的,所以不会生成一个事务,解决方案是直接去掉 this 调用。