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();


  • 相关阅读:
    C#读物
    那些健康手环真的值得买么?
    书籍推荐系列之一 -- 《凤凰项目:一个IT运维的传奇故事》
    测试
    HDU-2024 C语言合法标识符
    HDU-4548 美素数
    求最大流dinic算法模板
    最小费用最大流模板理解
    网络流初步——增广路代码的分析
    最短路的另外两种算法
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5248101.html
Copyright © 2011-2022 走看看