OpenFigen 的错误:抽象类不能作为返回值 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:

发布时间 2023-10-17 01:32:48作者: havelearned

正常使用openFigen的接口调用:
Result<IPage<SysUserVo>> 乍看之下毫无问题 ,IPage 是mybatis的一个分页插件接口类

@FeignClient(value = "xxxxx-system", url = "${figen.client.url.sys}",
        fallback = JiliException.class)
public interface UserServiceFigen {
    @GetMapping("/sysUser/list")
    Result<IPage<SysUserVo>> getList(@RequestParam SysUserDto sysUserDto);
}

开始请求,系统服务正常查询出数据,openFigen 客户端调用就出现

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage` (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

顾名思义: 无法构造com.baomidou.mybatisplus.core.metadata.IPage的实例(不存在像默认构造函数一样的创建者):抽象类型要么需要映射到具体类型,要么需要自定义反序列化程序,要么包含其他类型信息

解决:
Result<IPage> 改成 Result<Page> Page 是IPage的实现类,jackson可以正常反序列化