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

MongoDB Java SDK中@BsonProperty不生效 如何让字段使用注解指定名称

解决方案

问题根因

你当前使用的默认PojoCodecProvider配置仅会扫描Getter/Setter方法上的注解,不会识别字段上的@BsonProperty注解,同时会基于JavaBean方法名自动推导小驼峰格式的字段名,导致注解配置不生效。

具体修改步骤

  • 第一步:调整PojoCodecProvider的约定配置,开启注解扫描能力
    把你原来初始化pojoCodecRegistry的代码替换为以下内容:
    import org.bson.codecs.pojo.Conventions;
    // ...其他原有导入
    
    // 构建支持注解扫描的PojoCodecProvider
    PojoCodecProvider pojoCodecProvider = PojoCodecProvider.builder()
            .conventions(List.of(
                    Conventions.ANNOTATION_CONVENTION, // 启用Bson注解处理,支持字段、方法上的@BsonProperty
                    Conventions.CLASS_AND_PROPERTY_CONVENTION,
                    Conventions.SET_PRIVATE_FIELDS_CONVENTION // 支持直接操作私有字段,可选配置
            ))
            .automatic(true)
            .build();
    CodecRegistry pojoCodecRegistry = fromProviders(pojoCodecProvider);
    
  • 第二步:补全POJO类缺失的Getter方法
    你当前Product类的UPC属性只有setUPC方法,没有对应的getUPC方法,序列化时无法正常读取属性值,需要补上:
    public String getUPC() {
        return UPC;
    }
    
  • 可选兜底方案:如果改完配置还是不生效,可以直接把@BsonProperty注解放到对应的Getter方法上,比如:
    @BsonProperty(value = "product_sk")
    public String getProductSK() {
        return ProductSK;
    }
    

注意事项

确保你导入的@BsonProperty包路径正确,必须是org.bson.codecs.pojo.annotations.BsonProperty,不要误导入其他框架的同命名注解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 15:36:03