Spring mongotemplate查询结果与subDocuments

时间:2016-06-28 15:32:32

标签: java spring mongodb spring-data spring-data-mongodb

productChanges集合中的文档如下所示。

{
    "_id" : NumberLong(9780876590034),
    "isbn" : NumberLong(9780876590034),
    "updDtime" : ISODate("2016-06-08T14:02:29.044Z"),
    "Audit" : {
        "LastProcCntrlNo" : 100192211,
        "UpdDtime" : ISODate("2016-06-08T14:02:29.044Z"),
        "AddDtime" : ISODate("2016-06-08T14:02:29.044Z")
    } 
}

我有ProductChanges.java

public class ProductChanges {
     Long isbn;
     Date updDtime;
     Audit audit;

     // getters & setters
}

我使用mongoTemplate来查询数据库,但我无法填充Audit个对象。

// query the DB
List<ProductChanges> productChanges = mongoTemplate.find(query, ProductChanges.class, "productChanges");

这应该是直截了当的。我需要注释我的Audit对象吗?我错过了一些微不足道的事情吗?

Spring Data MongoDB文档没有帮助找到这个问题的答案。

1 个答案:

答案 0 :(得分:1)

基于Spring Data MongoDB documentation

  

短Java类名称按以下方式映射到集合名称。课程accessibilityLabel会映射到com.bigbank.SavingsAccount集合名称。

     

对象的字段用于转换为和中的字段   文献。不使用公共JavaBean属性。

由于您的子文档字段名为savingsAccount且Java字段名称为Audit,因此Spring Data无法按预期填充audit字段。

要解决此问题,您应该将字段重命名为audit

Audit

或使用public class ProductChanges { Long isbn; Date updDtime; Audit Audit; // renamed to Audit from audit // getters & setters } 注释:

@Field

您可以阅读有关映射注释here的更多信息。并提出建议,尝试使用一致的命名约定。