如何修改POJO类映射到MongoDatabase的存储字段名称?
问题根源
你当前使用的@JsonProperty是Jackson提供的JSON序列化注解,MongoDB默认的POJO字段映射规则不会识别该注解,会直接使用Java类的属性名作为MongoDB文档的字段名,所以才会出现全小写字段的情况。
解决方案
按照你使用的技术栈选择对应方案即可:
方案1:Spring Data MongoDB场景(最常用)
替换注解为Spring Data MongoDB专属的@Field注解,直接指定存储到MongoDB的字段名:
import org.springframework.data.mongodb.core.mapping.Field; public class Student { @Field("NAME") private String name; @Field("ID") private Integer id; // 保留原有getters和setters }
方案2:MongoDB Java Driver + Jackson序列化场景
如果你是通过Jackson把POJO序列化为JSON后再存入MongoDB,需要确保两点配置生效:
- 注册Jackson Codec到MongoDB客户端,让驱动使用Jackson做序列化
- 配置Jackson
ObjectMapper允许识别字段上的@JsonProperty注解,示例配置:
ObjectMapper objectMapper = new ObjectMapper(); // 开放字段访问权限,允许识别字段上的Jackson注解 objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); // 注册Jackson codec到MongoDB客户端 MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .codecRegistry(JacksonCodecRegistry.builder().objectMapper(objectMapper).build()) .build());
配置完成后保留你原有的@JsonProperty注解即可实现大写字段存储。
内容的提问来源于stack exchange,提问作者AD27060
相关产品推荐
相关产品推荐

