Mockito MybatisPlus baseMapper:can not find lambda cache for this property

夜深静悄悄 2020-01-14 02:05:31
背景:使用了MybatisPlus,在对service层进行单元测试时,为保证数据与应用隔离,采用Mock的方式.

问题:Mockito对Mapper进行mock后,相关的TableInfo信息无法初始化,导致Wrapper组装条件时
报:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this property [****] of entity [Entity]

分析:排错时发现LambdaUtils.getColumnMap(aClass)中无数据;

原因:首先是MybatisPlus的bug,经过分析后排除,再次考虑TableInfo的初始化过程被中止,或者被Mock替换了,更有可能是压根就没有触发(没有具体研究过测试框架的,无法给出结果,但是不影响解决问题)

方案:解决的方案是手动触发相关缓存信息收集(或许还有更优雅的方案)

方式:在执行目标方法之前添加TableInfoHelper.initTableInfo(null, Xxx.class);
...全文
6046 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
琳若曦扬 2022-03-23
  • 打赏
  • 举报
回复

这行代码前面的参数传null报错

Leone_liu 2022-03-23
  • 举报
回复 1
@琳若曦扬 TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), “”), xxxxDO.class)

50,559

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧