背景: 定义一个实体类, 使用MongoTemplate插入数据库之后,发现文档中多了一个_class的字段
一、实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
/**
* 自定义列表 admp_custom_list
* @author xiaoyj
* @date 2022-07-06
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "dws_admp_custom_list_test")
public class CustomListDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 租户Id
*/
@Field("tenant_id")
private Long tenantId;
/**
* 功能菜单
*/
private String title;
/**
* 自定义列表
*/
private String [] list;
/**
* 用户名
*/
private String username;
}
二、解决方法
增加一个Mongo的配置类
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
/**
* MongoDB 自定义类型转换器
* @author xiaoyj
* @date 2022-07-05
*/
@Configuration
public class MongoConverterConfig implements InitializingBean {
@Autowired
private MappingMongoConverter mappingConverter;
@Override
public void afterPropertiesSet() {
// 去除插入数据库的_class字段
mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
}
}
二、处理后
添加配置类后,清空所有文档, 再次插入数据库的效果发现此时_class字段已经没了