Mybatis-plus: 版本3.1.1从TABLE_INFO_CACHE获取不到TableInfo

Created on 4 May 2019  ·  3Comments  ·  Source: baomidou/mybatis-plus

当前使用版本(必须填写清楚,否则不予处理)

版本3.1.1从TABLE_INFO_CACHE获取不到TableInfo

该问题是怎么引起的?

用lambda表达式构建查询时,如.eq(PromoteDict::getDictType,dictType),传入的clazz对象和TABLE_INFO_CACHE中存放key的clazz对象不是同一个,造成
TableInfo tableInfo = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(clazz));获取到的tableInfo永远为空。

重现步骤

报错信息

All 3 comments

把你如何使用的描述清楚

用lambda表达式构建查询时,如.eq(PromoteDict::getDictType,dictType),这时会找实体映射表信息,会调TableInfoHelper的getTableInfo(Class clazz)方法,这里是去TABLE_INFO_CACHE缓存里根据class对象去取TableInfo,也就是
TableInfo tableInfo = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(clazz));
但是由于TableInfoHelper是由RestartClassLoader加载的(本地环境使用了springboot的spring-boot-devtools),而传进来的class对象是AppClassLoader加载的,所以就算类的全类名一样,也从TABLE_INFO_CACHE缓存里拿不到TableInfo信息

那就把你的spring-boot-devtools去除掉

Was this page helpful?
0 / 5 - 0 ratings