来自 mongo 模板的 Mongo 响应未正确映射到 java 对象

Posted

技术标签:

【中文标题】来自 mongo 模板的 Mongo 响应未正确映射到 java 对象【英文标题】:Mongo response from mongo template not being mapped properly into java object 【发布时间】:2021-09-20 05:03:06 【问题描述】:

我有一个由 jsonSchemaPojo2 创建的 java pojo:

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonPropertyOrder(
   "CardBranding"
)

public class RewardsProcessing implements Serializable

    @JsonProperty("CardBranding")
    @NotNull
    private String cardBranding

    public RewardsProcessing(String cardBranding)
         this.cardBranding = cardBranding
    

    @JsonProperty("CardBranding")
    public String getCardBranding()return cardBranding; 
    
    @JsonProperty("CardBranding")
    public void setCardBranding(String cardBranding) this.cardBranding = cardBranding


奖励收集:

[
 CardBranding : "1",
 CardBranding : "2"
]

以下代码将mongo响应解析成java pojo

AggregationResults results = mongoTemplate.aggregate(agg, "Rewards", RewardsProcessing.class);

问题是我在生成的 java 对象中得到了 null。聚合区分大小写。

我有两个选择:

    使用 jsonschemapojo2 中的某些属性将 cardBranding 字段设为大写。我尝试研究但没有找到。 Schemapojo2 默认将字段设置为小写。

    配置聚合方法忽略大小写。

提前致谢!!

【问题讨论】:

【参考方案1】:

不要使用jackson使用的@JsonProperty,而是使用@Field字段注释。

@Field("CardBranding")
private String cardBranding

需要使用导入注解 import org.springframework.data.mongodb.core.mapping.Field;

【讨论】:

以上是关于来自 mongo 模板的 Mongo 响应未正确映射到 java 对象的主要内容,如果未能解决你的问题,请参考以下文章

NestJS Mongo 引用未正确保存

如何在 ejs 模板中使用数组显示来自 mongo 的 json 数据?

Mongo 查询失败,错误代码 13 和错误消息“未授权”

Mongo 查询失败,错误代码 13 和错误消息“未授权”

反应式 mongo 模板:mongo 4.4.0 上的“''cursor' 选项是必需的”

使用 Mongo 模板在 Spring Boot 中过滤内部 Arraylist 项的 Mongo 查询