2016-06-28 13 views
1

productChangesコレクションの文書は以下のようになります。サブdocumentsを使用した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") 
    } 
} 

は、私はDBを照会するmongoTemplateを使用

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

    // getters & setters 
} 

ProductChanges.javaクラスありますが、私はAuditオブジェクトが読み込まれますことはできません。

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

これは簡単です。 Auditオブジェクトに注釈を付ける必要はありますか?私は何か些細なことを逃していますか?

春のデータMongoDBのドキュメントは、この問題に対する答えを見つけるのに役立たなかった。 Spring Data MongoDB documentationに基づいて

+0

"Auditオブジェクトを入力できません":何が起きているかを記述する。エラーメッセージはありますか?それをしてはいけないとき、リストは単純な空であるか? –

+0

@ antoine-sacエラーメッセージはありません。 'productChanges'にはエントリが入っていますが、' audit'は常にnullです。 – ravindrab

答えて

1

短いJavaクラス名は次のようにして、コレクション名にマッピングされています。 com.bigbank.SavingsAccountは、コレクション名savingsAccountにマップされています。

オブジェクトのフィールドは、 ドキュメントのフィールドとの変換に使用されます。パブリックJavaBeanプロパティは使用されません。

あなたのサブ文書のフィールドはAuditの名前とJavaのフィールド名がauditですので、あなたは予想通り、春データは、auditフィールドを読み込むことができませんでした。

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

    // getters & setters  
} 

するか、@Field注釈を使用します:

この問題を解決するためには、あなたのいずれかがAuditにあなたのフィールドの名前を変更する必要があり

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

    // getters & setters 
} 

あなたはマッピング・アノテーションhereについての詳細を読むことができます。そしてアドバイスの言葉、一貫した命名規則を使用してみてください。

関連する問題