2016-06-28 52 views
1

productChanges集合中的文檔如下所示。帶子文檔的Spring mongotemplate查詢結果

{ 
    "_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文檔無助於找到此問題的答案。基於該Spring Data MongoDB documentation

+0

「我無法獲得審覈對象填充」:描述發生了什麼。任何錯誤消息?列表簡單的時候不應該是空的嗎? –

+0

@ antoine-sac沒有錯誤信息。 'productChanges'填充了條目,但'audit'始終爲空。 – ravindrab

回答

1

簡短的Java類名被映射到以下方式集合名稱。類別com.bigbank.SavingsAccount映射到savingsAccount集合名稱。

對象的字段用於在 文檔中將字段與字段進行轉換。公共JavaBean屬性不被使用。

由於您的子文檔字段命名爲Audit和Java字段名是audit,如你預期春天數據不能填充audit領域。

爲了解決這個問題,你要麼應該將字段重命名爲Audit

public class ProductChanges { 
    Long isbn; 
    Date updDtime; 
    Audit Audit; // renamed to Audit from audit 

    // getters & setters  
} 

或使用@Field註釋:

public class ProductChanges { 
    Long isbn; 
    Date updDtime; 
    @Field("Audit") Audit audit; 

    // getters & setters 
} 

你可以閱讀更多關於映射註釋here。並有一個建議,嘗試使用一致的命名約定。