很头疼一天了。。java.lang.NoSuchMethodException

图片说明

图片说明

 SEVERE: Servlet.service() for servlet [MES] in context with path [/MES] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class td.young.smp.entity.TSM_QPM_Q001 with invalid types () or values (). Cause: java.lang.NoSuchMethodException: td.young.smp.entity.TSM_QPM_Q001.<init>()] with root cause
java.lang.NoSuchMethodException: td.young.smp.entity.TSM_QPM_Q001.<init>()

究竟是为什么啊?不要和我说struts2的问题我就没有用这个框架,用的是ssm的。。

看看父类是不是抽象的,是的话要全部重写,看看漏掉了什么吗

回答错人了 ,不好意思

可能是没有掉super 这样相当是自己重写 是拿不到父类的

是不是用到实体类的那个方法,定义参数有问题啊

别的先不说,你这些类名起的还这是。。。。

没看懂,哪行代码报错啊。项目启动的时候报错啊?

你这个init初始化的时候就已经报错了,我建议你看看两个地方:
1.子类调用是不是用的supper
2.是不是提供了有参数的构造方法就去掉了无参数的构造方法了

因为代码不全,所以只能有这两个猜测

你这个是ibatis 方向的问题,你看看,你向这个方向去考虑,考虑下是否重置了构造器,导致无参构造器被替换掉,Ibatis在创建bean映射的时候需要无参的构造其来构造对象,然后才进行赋值操作
还有一个就是映射关系 再检查一下,已尽力 好评

继承了父类的getset但是子类里没有重新定义变量.是不是这个原因,父类里的变量都是private的

是的 检查一下还有没有无参构造吧

这个异常出在你的数据库字段和实体类字段上面,是由于映射导致的问题,所以提示的是没有找到方法异常

代码不完整不好说什么问题,只能猜,看看是不是xml里面配置resultMap的时候是不是用到构造函数

如果不知道具体写哪些就把有参无参构造、get、set方法都写上,也没什么影响。

继承父类的getset,子类里没有重新定义父类里的变量都是private

方法找不到。
如果方法存在的话
就重新部署一下重新启动项目

没有提供空参构造函数吧

回答:你这是mybatis的问题,异常显示是,没有找到相应的方法,你首先看看你的控制层-服务层分别调用的方法的方法名,函数名,在dao层是否存在当前的函数名,没有 就会提示这个没有找到方法的异常信息。

1.检查action层是否存在该方法
2.检查该方法是否为 public
3.检查此方法是否传了参数,
请把 long id 删除 
4.检查jar包
上述还未解决问题
 清理缓存,重新部署项目即可

你写的类名是C++风格的,不符合JavaBean规范,出现这个问题,应该是你的无参构造缺失造成的,而且我们无法知道你是否有实现其他的构造器

mybatis映射配置了吗?或者用没用到注解,用到的话应该加上@Entity注解的

看看你的构造方法写了吗,写的什么样的,

是不是在子类中没有写无参构造方法引入父类super()呀

没有空的构造方法

Deployment Assembly

你看看吧

https://www.cnblogs.com/apache-x/p/5673663.html