You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成MongoDB时@JsonProperty注解不生效如何解决?

问题原因

@JsonProperty 是Jackson序列化框架提供的注解,仅作用于Java对象和JSON字符串互相转换的场景(比如接口接收参数、返回响应的字段名映射),Spring Data MongoDB 做数据持久化时不会读取该注解的配置,默认会直接使用Java类的字段名作为MongoDB文档的存储字段名,所以会出现字段名和你预期不一致的情况。

另外注意你的Customer实体类上错误添加了@Configuration注解,该注解用于标记Spring配置类,不应该加在实体类上,建议直接删除。

解决方案

有两种常用方案可以实现你要的效果:

方案1:单个字段自定义映射

给需要修改存储字段名的属性添加Spring Data MongoDB专属的@Field注解,指定存储到MongoDB中的字段名即可,示例如下:

// 导入注解
import org.springframework.data.mongodb.core.mapping.Field;

// 字段配置示例
@JsonProperty("customer_id")
@Field("customer_id")
private String customerId;

@JsonProperty("modified_timestamp")
@Field("modified_timestamp")
private LocalDate modifiedDate;

方案2:全局统一蛇形命名配置

如果你项目中所有实体类都需要统一将Java小驼峰字段转为下划线蛇形命名存储到MongoDB,可以直接配置全局字段命名策略,不需要每个字段单独加注解。
在application.yml中添加如下配置:

spring:
  data:
    mongodb:
      field-naming-strategy: org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy

如果用的是application.properties,配置如下:

spring.data.mongodb.field-naming-strategy=org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy

配置生效后,Java字段的小驼峰命名会自动转为下划线蛇形命名存储,和你@JsonProperty指定的命名规则保持一致。

内容的提问来源于stack exchange,提问作者Valay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:48:02