今天做实验的时候,发送一个 传参查数据的GET请求,但是一直响应500
对应的报错记录是这样的:
ClassCastException类型转化异常,class com.example.spring01.entity.Problem cannot be cast to class org.springframework.beans.factory.parsing.Problem,前一个类是我创建的实体类,另一个类是Spring 框架内部用于处理 Bean 配置元数据解析过程中的问题记录的一个工具类(报错的时候一直没留意这个类,后面ctrl单击进去看了知道)。
这个error耗了两个多小时才解决,我也是醉了。一开始以为是对应mapper的xml映射文件返回的类型不对,提示也是在controller类上,就一直在这个类上对导入的实体类,切换回导入我自己创建的实体类,但是还是会报错提醒让我转化为spring框架下的类(当时没反应过来,还以为这个类也是跟我创建的problem类一样)。
最后发现的原因如下:
Mapper 接口和 Controller 类中【mapper和controller导入相同实体类的情况下,controller导入的实体类所在包路径是受mapper影响的,两者导入的类需要是同一个包下的类(不过这种会误导入框架自带类的包的情况应该算概率不大的事件)】,都错误地导入了 Spring 框架中的 Problem
类而不是我自己创建的实体类。这导致了在运行发送GET请求的时候,项目尝试将我所创的实体类转换为 Spring 框架中的 Problem
类,从而就抛出了 ClassCastException
异常。
解决方案就是:
在Mapper接口下把导入实体类修改为自己所创的实体类、对应的Controller也是如此。最后重新运行,over,解决问题!!