当前使用版本(必填,否则不予处理)
v3.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
gradle插件使用代码生成,配置superEntityClass,提示找不到class
重现步骤(如果有就写完整)
你好,这个一个很优秀的工具库,我们项目中使用的是gradle而非maven,我们做了gradle的插件,插件中集成了代码生成功能,原先3.0.x版本的时候,是可以的,最近升级到3.3.2,发现使用了superEntityClass,提示找不到class。
因为gradle插件的运行机制和普通代码运行机制不一样,所以可能会导致classload中无法找到entity的父类,是否可以提供方法屏蔽下。
StrategyConfig.java
/**
* 设置实体父类
*
* @param superEntityClass 类全名称
* @return this
* @deprecated 3.3.2 {@link #setSuperEntityClass(Class)}
*/
@Deprecated
public StrategyConfig setSuperEntityClass(String superEntityClass) {
return setSuperEntityClass(ClassUtils.toClassConfident(superEntityClass));
}
报错信息
gradle插件使用代码生成,配置superEntityClass,提示找不到class
Comment From: LiushuiXiaoxia
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: 找不到指定的class!请仅在明确确定会有 class 的时候,调用该方法
at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
at com.baomidou.mybatisplus.core.toolkit.ClassUtils.toClassConfident(ClassUtils.java:152)
at com.baomidou.mybatisplus.generator.config.StrategyConfig.setSuperEntityClass(StrategyConfig.java:289)
at com.baomidou.mybatisplus.generator.config.StrategyConfig_Decorated.setSuperEntityClass(Unknown Source)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.setProperty(BeanDynamicObject.java:358)
at org.gradle.internal.metaobject.BeanDynamicObject.trySetProperty(BeanDynamicObject.java:176)
at org.gradle.internal.metaobject.CompositeDynamicObject.trySetProperty(CompositeDynamicObject.java:66)
at org.gradle.internal.metaobject.ConfigureDelegate.setProperty(ConfigureDelegate.java:95)
Comment From: LiushuiXiaoxia
https://github.com/LiushuiXiaoxia/mybatis-plus-gradle-generator
Comment From: nieqiurong
你需要在你的mpg.gradle中声明buildscript中传递你的基础模块,但并不支持项目依赖,详情请参考文档。https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
Comment From: LiushuiXiaoxia
你需要在你的mpg.gradle中声明buildscript中传递你的基础模块,但并不支持项目依赖,详情请参考文档。https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
第一步我知道的,不过我们项目中都是dto共享,每次发布成snapshot版本,供其他项目使用,所以我们的dto和spring boot项目是分开的,这样就有2个项目了,所以就有了项目依赖问题。
Comment From: LiushuiXiaoxia
临时的解决方法是这样的,还是希望可以有方法可以屏蔽下。
package cn.mycommons.mpg.pojo
import com.baomidou.mybatisplus.generator.config.StrategyConfig
/**
* StrategyConfig2 <br/>
* Created by xiaqiulei on 2020-05-30.
*/
class MyStrategyConfig extends StrategyConfig {
private String superEntityClass2
MyStrategyConfig() {
}
@Override
StrategyConfig setSuperEntityClass(String superEntityClass) {
superEntityClass2 = superEntityClass
return this
}
@Override
String getSuperEntityClass() {
return superEntityClass2
}
}
Comment From: LiushuiXiaoxia
感谢大佬