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


  • 相关阅读:
    【转】Java中super和this的几种用法与区别
    公寓上网新认证方式破解研究
    移动设计
    破解哈工程大学深澜认证路由器
    Arch Linux安装记录
    foreach新解
    工具大全(转载)
    Linux 入门
    设置为驼峰命名
    efcore Add-Migration 错误
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5248101.html
Copyright © 2011-2022 走看看