Spring Boot 和 MongoDB 如何删除“_class”列?

新手上路,请多包涵

将数据插入 MongoDB Spring Data 时添加自定义“_class”列,在使用 Spring Boot 和 MongoDB 时有没有办法消除“class”列?

还是我需要创建一个自定义类型映射器?

任何提示或建议?

原文由 Marco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

我认为您需要创建一个 @Bean 类型为 MongoTemplate 并明确设置类型转换器。详细信息(非引导但只提取模板配置): http ://www.mkyong.com/mongodb/spring-data-mongodb-remove-_class-column/

原文由 Dave Syer 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进