首页 > 数据库技术 > 详细

MongoDB中对象反序列化的一个小问题

时间:2015-07-07 19:37:42      阅读:191      评论:0      收藏:0      [点我收藏+]

今天在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一部分,在mongoDB客户端初始化的时候objectMapper对象调用这个方法就可以做到重新构建抽象类声明的成员变量。

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

MongoDB中对象反序列化的一个小问题

原文:http://blog.csdn.net/gotobar/article/details/46790889

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!