由于项目之前是使用 Nodejs 写的,数据存放在 Mongodb 中,为了保证切换到 Spring Boot 这边,数据保持一致性。而 Spring Data Mongo 在保存数据的过程中会加入 _class 字段。数据库中虽然没有这个字段还是可以正常读取的,但写入或者更新的时候,就默认给你添加这个字段。
去掉 Mongodb 写入时自动写入类名,写一个配置类即可。直接复制粘贴到项目中即可。已经过测试。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
/**
* https://stackoverflow.com/questions/23517977/spring-boot-mongodb-how-to-remove-the-class-column
*/
@Configuration
public class MongoClassConverter {
private final MongoDbFactory mongoDbFactory;
private final MongoMappingContext mongoMappingContext;
public MongoClassConverter(MongoDbFactory mongoDbFactory, MongoMappingContext mongoMappingContext) {
this.mongoDbFactory = mongoDbFactory;
this.mongoMappingContext = mongoMappingContext;
}
@Bean
public MappingMongoConverter mappingMongoConverter() {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
return converter;
}
}
由于项目之前是使用 Nodejs 写的,数据存放在 Mongodb 中,为了保证切换到 Spring Boot 这边,数据保持一致性。而 Spring Data Mongo 在保存数据的过程中会加入
_class
字段。数据库中虽然没有这个字段还是可以正常读取的,但写入或者更新的时候,就默认给你添加这个字段。去掉 Mongodb 写入时自动写入类名,写一个配置类即可。直接复制粘贴到项目中即可。已经过测试。
参考链接