将数据插入 MongoDB Spring Data 时添加自定义“_class”列,在使用 Spring Boot 和 MongoDB 时有没有办法消除“class”列?
还是我需要创建一个自定义类型映射器?
任何提示或建议?
原文由 Marco 发布,翻译遵循 CC BY-SA 4.0 许可协议
将数据插入 MongoDB Spring Data 时添加自定义“_class”列,在使用 Spring Boot 和 MongoDB 时有没有办法消除“class”列?
还是我需要创建一个自定义类型映射器?
任何提示或建议?
原文由 Marco 发布,翻译遵循 CC BY-SA 4.0 许可协议
该问题的最新答案,使用嵌入式 mongo db 进行测试用例:我引用 http://mwakram.blogspot.fr/2017/01/remove-class-from-mongo-documents.html
Spring Data MongoDB 在 mongo 文档中添加 _class 来处理 java 继承的多态行为。如果您想删除 _class,只需在代码中删除以下 Config 类。
package com.waseem.config;
import org.springframework.beans.factory.annotation.Autowired;
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;
@Configuration
public class MongoConfig {
@Autowired MongoDbFactory mongoDbFactory;
@Autowired MongoMappingContext mongoMappingContext;
@Bean
public MappingMongoConverter mappingMongoConverter() {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
return converter;
}
}
原文由 Jeremie 发布,翻译遵循 CC BY-SA 3.0 许可协议
我认为您需要创建一个
@Bean
类型为MongoTemplate
并明确设置类型转换器。详细信息(非引导但只提取模板配置): http ://www.mkyong.com/mongodb/spring-data-mongodb-remove-_class-column/