Ich benutze mongo-java-Treiber in meiner Anwendung zum Lesen und Schreiben von Daten zu mongodb.Schreibe Codec für eingebettete Dokumente in mongodb-java-Treiber
I-Klassen wie diese haben -
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
}
I Codec für die Klassen C, wie diese erstellt haben -
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);
}
}
Codec für Klasse 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();
}
}
kann ich nicht mache das Codieren in BCodec wie ich es für CCodec getan habe, denn wenn ich sage
Document document = new Document();
Es erstellt ein neues Dokument, aber ich wan't es in Dokument C eingebettet haben
Nun ist die Frage, wie eine vom Typ Liste in B-Klasse kodieren i Feld? Siehe encode-Methode der BCodec-Klasse. Ich brauche nicht zu sagen, dass ich den Codec in CodecProvider hinzugefügt habe.
Jede Hilfe wird geschätzt.
Wie unterscheidet es sich von einem i oben geschrieben haben? –
@RaviKumar ** // Wie kodiere ich A Hier ** in Ihrem Code ist, was beantwortet wurde. * Wie kodiere ich Feld a vom Typ Liste in B-Klasse? * ist, wo ich das codierte 'A' in eine Liste geworfen habe, während ich das' B' decodiert habe. – nullpointer