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)