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();
}
}
그럴 수 없어 내가 말 할 때 내가 CCodec에했던 것처럼 BCodec에서 인코딩을 수행한다.
그것은 새 문서를 생성하지만 난 wan't
Document document = new Document();
은 이제 문제는 내가 B 클래스 형식 목록 필드를 인코딩 할 방법이다 문서 C.
에 포함 된 것으로? BCodec 클래스의 encode 메서드를 참조하십시오. 말할 필요도없이 CodecProvider에 모든 코덱을 추가했습니다.
도움을 주시면 감사하겠습니다.
어떻게 내가 위에 쓴 것과 다른? –
@RaviKumar ** // 코드를 인코딩하는 방법 ** 코드에서 응답 된 내용입니다. * B 클래스의 List 타입의 필드를 어떻게 인코딩합니까? *는 인코딩 된 'A'를 'B'를 디코딩하는 동안리스트에 캐스팅 한 것입니다. – nullpointer