mongo中插入的数据含有_class信息
2016-06-16 16:17
435 查看
mongo中插入的数据去掉_class
在spring for mongodb中,会发现当一个pojo序列化为一个document时,会出现如下情况:
public class User {
String username;
String password;
}
转变为mongodb 时
Java代码
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
User user = new User("abc", "password123");
mongoOperation.save(user, "users");
会发现document中,多了个_class属性:
Java代码
{
"_class" : "com.abc.user.User",
...................
}
多了_class的意义,在下面这个链接有很好的解答: http://stackoverflow.com/questions/6810488/spring-data-mongodb-mappingmongoconverter-remove-class/ ,其实就是说,为了在把document转换成Java对象时能够转换到具体的子类.
要去掉的方法简单:DefaultMongoTypeMapper类的构造函数的第一个参数是Type在MongoDB中名字. 设置为null的话就不会在保存时自动添加_class属性.所以需要覆写
MappingMongoConverter。
1)用注解的方法取消:
Java代码
@Configuration
public class SpringMongoConfig{
public @Bean
MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new Mongo(), "database");
}
public @Bean
MongoTemplate mongoTemplate() throws Exception {
MappingMongoConverter converter =
new MappingMongoConverter(mongoDbFactory(), new MongoMappingContext());
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
return mongoTemplate;
}
2)XML配置文件
<pre name="code" class="java"><mongo:mongo host="localhost" port="27017" />
<mongo:db-factory dbname="database" />
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey"><null/></constructor-arg>
</bean>
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mappingContext" ref="mappingContext" />
<property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>
</pre>
<br>
<br>
<br>
相关文章推荐
- (EM算法)The EM Algorithm
- mongoose 相关操作
- django orm 操作
- Diy Win7 OEMlogo
- django view call model methods
- golang学习之奇葩的time format
- mongoose 模式使用
- Django -model的字段类型清单
- Django快速搭建Blog
- django URL模式浅析
- golang map to struct
- go性能调优2
- go性能调优1
- 基于Django的web开发
- 和lock一起学beego 博客系统开发为例(三)
- 怎么在windows下给GO执行程序添加ico
- LightOJ 1051 Good or Bad (递推DP)
- 2016 Google hosts 持续更新【更新于:2016-06-15】
- Django学习笔记:为Model添加Action
- 如何压缩Golang 编译出的可执行文件大小