今天开发了个需求,测试的时候报这个错误:Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
网上搜了一下,就是说调用的接口返回值无法转为接收的对象,我仔细看了下自己的代码,请求参数和返回参数都是一致的啊,实体类也是公用的,不可能出现转换的问题。
请求接口的地方 接口的写法,入参和返回参数都是一致的找了一段时间,怎么想都不应该。然后看了下接口内部的处理,恍然大悟,接口内的报错信息如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'ApplicationNum' of 'class com.sinosoft.light.api.thtf.feign.dto.tps.Record' with value '19101757788377810894' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'ApplicationNum' in 'class com.sinosoft.light.api.thtf.feign.dto.tps.Record'
这一看就是接口类中的,查询数据后转换成DTO的时候报错的信息。
原来是根据表名建的DTO,现在的需求是换一个字段,原来表中的字段和实体类对应不上,所以报出了上面的异常。经过修改后可以正常处理了。
修改字段后,实体类和表字段都对应上了其实这只是一个很小的问题,人只看外部,忽略了内部的信息,导致浪费了一些时间。
网友评论