https://github.com/baomidou/mybatis-plus/blob/d71880b67ff4741d6cdc2a0620ff87ac715177c4/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/segments/OrderBySegmentList.java#L34-L41
在单元测试时,由于是使用Mockito模拟Mapper返回的结果,没有创建MybatisSqlSessionFactoryBean也不会设置com.baomidou.mybatisplus.core.metadata.TableInfoHelper#TABLE_INFO_CACHE。 如果在单元测试方法中使用LambdaQueryWrapper.orderBy方法会因为找不到数据库表对应的类而发生异常。
37行的代码能否放在39行,让它在调用Mapper后执行,避免上面问题。
ps 我觉得这种操作就是应该让它最晚执行吧!!!
Comment From: chenleii
当前使用版本(必填,否则不予处理)
3.3.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
在单元测试时,由于是使用Mockito模拟Mapper返回的结果,没有创建MybatisSqlSessionFactoryBean也不会设置com.baomidou.mybatisplus.core.metadata.TableInfoHelper#TABLE_INFO_CACHE。 如果在单元测试方法中使用LambdaQueryWrapper.orderBy方法会因为找不到数据库表对应的类而发生异常。
重现步骤(如果有就写完整)
报错信息
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this entity [xxx]
at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49)
at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38)
at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72)
at com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper.getColumn(AbstractLambdaWrapper.java:84)