1
私のアプリケーションでmongo-java-driverを使用してmongodbにデータを読み書きしています。mongodb-java-driverに埋め込みドキュメントのコーデックを書き込む
は、私はこのようなクラスを持っている -
public class CCodec implements Codec<C> {
private Codec<Document> documentCodec;
public CCodec(CodecRegistry registry) {
documentCodec = registry.get(Document.class);
}
@Override
public void encode(BsonWriter writer, C c, EncoderContext context) {
Document document = new Document();
document.put("c",c.getC());
document.put("b",c.getB());
documentCodec.encode(writer, document, context);
}
}
コーデッククラスBのために - - 私はこのようなクラスCのためのコーデックを作成している
public A{
private String a;
//Getters & Setters
}
public class B{
private String b;
private List<A> a;
//Getters & Setters
}
public class C{
private String c;
private B b;
//Getters & Setters
}
public class BCodec implements Codec<B> {
private Codec<Document> documentCodec;
public CCodec(CodecRegistry registry) {
documentCodec = registry.get(Document.class);
}
@Override
public void encode(BsonWriter writer, B b, EncoderContext context) {
writer.writeStartDocument();
writer.writeString("b",b.getB());
//How to encode A Here
writer.writeEndDocument();
}
}
私はできませんBCodecでエンコードを行う理由は、私が言うときには、CCodecのためでした。
Document document = new Document();
これは、新しいドキュメントを作成しますが、私はそれが今の質問は、私はBクラスでList型のフィールドAのエンコードはどうすればよいです文書C.
に埋め込ま持つことwan't? BCodecクラスのencodeメソッドを参照してください。 言うまでもなく、CodecProviderにすべてのコーデックを追加しました。
何か助けていただければ幸いです。
どのようにそれは私が上に書かれているものとは違うのですか? –
@RaviKumar ** //ここでコードをエンコードする方法**あなたのコードでは答えられたことがあります。 * B型のList型のフィールドaをどのようにエンコードするのですか?*は、 'B'をデコードしながら、エンコードされた' A'をリストにキャストした場所です。 – nullpointer