今天在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();

最新文章

  1. javaMd5加密
  2. 2014优秀的好用的20款免费jQuery插件推荐
  3. 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )
  4. Linux重置root密码步骤
  5. Linux crontab 命令详解
  6. laravel框架总结(三) -- 路径分析
  7. 数据库防火墙如何防范SQL注入行为
  8. JS Replace 全部替换字符 用法
  9. USACO全部测试数据
  10. Hibernate 缓存机制(转)
  11. JavaScript基础知识(一)
  12. 解决IIS无法启动w3svc
  13. ADO SQL手写分页
  14. BZOJ2038[2009国家集训队]小Z的袜子(hose)——莫队
  15. Ubuntu 16.04上搭建CDH5.16.1集群
  16. logmnr使用
  17. eclipse中运行tomcat提示端口被占的4种解决方案
  18. YII创建应用
  19. (一)Jmeter 简单的录制
  20. Maven Profiles 定义不同环境的参数变量

热门文章

  1. 16.04 下修改 ssh 默认端口
  2. 利用canvas写一个验证码小功能
  3. 洛谷p1049 01背包
  4. Git Bash 常用指令
  5. 如何用纯 CSS 创作一个容器厚条纹边框特效
  6. c++ 高精度 加减乘除 四则运算 代码实现
  7. 【HIHOCODER 1043】题目1 : 完全背包
  8. 【转载】CentOS6.5升级手动安装GCC4.8.2
  9. server中intersect的用法
  10. hdu1059(背包dp二进制优化)