Al insertar una lista en mongodb, hay un problema:cómo serializar la clase?
Exception in thread "main" java.lang.IllegalArgumentException: can't serialize class mongodb.Person
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:86)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:142)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:252)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:211)
at com.mongodb.DBCollection.insert(DBCollection.java:57)
at com.mongodb.DBCollection.insert(DBCollection.java:87)
at com.mongodb.DBCollection.save(DBCollection.java:716)
at com.mongodb.DBCollection.save(DBCollection.java:691)
at mongodb.MongoDB.main(MongoDB.java:45)
la clase Persona se define como sigue:
class Person{
private String name;
public Person(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
El programa es:
DBCollection coll = db.getCollection("test");
DBObject record = new BasicDBObject();
List<Person> persons= new ArrayList<Person>();
persons.add(new Person("Jack"));
record.put("person", persons);
coll.save(record);
que pueda No encuentras la respuesta de google, así que por favor ayudame.
cómo hiciste esto @ vienna ... Por favor, ayúdame, estoy teniendo el mismo problema. Por favor ayuda – shalki
Una observación: uno de los beneficios de MongoDB es la capacidad de evolucionar el esquema en el tiempo sin tener que actualizar los documentos existentes con estos nuevos campos. Por lo tanto, puede querer almacenar sus objetos como documentos (es decir, con un campo para el nombre, etc.), o si realmente desea hacer una serialización binaria, es posible que prefiera usar algo como Google Protocol Buffers, que es más a prueba de futuro forma de lograr la serialización binaria. – Rich