zoukankan      html  css  js  c++  java
  • MongoDB中对象反序列化的一个小问题

    今天在mongoDB存取对象数据的时候,碰到一个小问题:对象的某一个字段类型是抽象类或者接口。在存入的时候没有问题。可是在读取的时候,因为没有详细类的信息,无法完毕对象的又一次构建。就会报错:

    Can not construct instance of com.bp.samples.json.generics.xxx, 
    problem: abstract types either need to be mapped to concrete types, have custom 
    deserializer, or be instantiated with additional type information
    at [Source:xxxxx]
    搜索了一下。有一种方法是给父类加注解。标明继承该父类的全部详细类的名字,网址:
    http://blog.csdn.net/java_huashan/article/details/46428971

    可是这样的方法由一个局限性,假设我的详细子类是可拓展的,那么每次都要改动源码上面的注解。假设是父类是在框架里,在jar包中,可能就不妥了。

    经人指点,找到还有一种比較好的方法,就是在http://wiki.fasterxml.com/JacksonPolymorphicDeserialization中提到的enableDefaultTyping一部分,在mongoDBclient初始化的时候objectMapper对象调用这种方法就能够做到又一次构建抽象类声明的成员变量。

    像这样:mapper = new ObjectMapper();
    mapper.enableDefaultTyping();


  • 相关阅读:
    js-监听网络状态
    call、apply、bind三者比较
    弹框滑动击穿问题
    Vue指令及自定义指令的使用
    vue-cli 运行打开浏览器
    递归判断多维数组中对象是否有值
    sync 修饰符在Vue中如何使用
    自定义组件 v-model 的使用
    Object.keys( )与 for in 区别
    mongodb 安装
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5248101.html
Copyright © 2011-2022 走看看