Я использую mongo-java-драйвер в своем приложении для чтения и записи данных в mongodb.Write Codec для встроенных документов в mongodb-java-driver
У меня есть классы, как это -
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);
}
}
Кодек для класса В -
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();
Он создает новый документ, но я wan't, чтобы он встраивается в документе C.
Теперь вопрос, как я закодировать поле а из списка типа в классе B? См. Метод кодирования класса BCodec. Излишне говорить, что я добавил весь кодек в CodecProvider.
Любая помощь приветствуется.
Чем он отличается от одного я написал выше? –
@RaviKumar ** // Как кодировать A Здесь ** в вашем коде - это то, на что был дан ответ. * как я кодирую поле a типа List в классе B? *, где я произвел кодировку 'A' в List при декодировании' B'. – nullpointer