【发布时间】:2017-06-26 03:10:39
【问题描述】:
我在我的应用程序中使用 mongo-java-driver 来读取和写入数据到 mongodb。
我有这样的课程 -
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
}
我已经像这样为 C 类创建了编解码器 -
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 类编解码器 -
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();
}
}
我不能像在 CCodec 中那样在 BCodec 中进行编码,因为当我说
Document document = new Document();
它创建了一个新文档,但我不想将它嵌入到文档 C 中。
现在的问题是如何在 B 类中对 List 类型的字段 a 进行编码? 请参见 BCodec 类的编码方法。 不用说我已经在 CodecProvider 中添加了所有的编解码器。
感谢任何帮助。
【问题讨论】:
标签: java mongodb bson mongo-java-driver