My code:
public class MongoTest {
public static void main(String[] args) {
saveObj();
}
public static void saveObj(){
Mongo mongo = null;
try {
mongo = new Mongo();
} catch (UnknownHostException | MongoException e) {
e.printStackTrace();
}
DB db = mongo.getDB("sampleDB");
DBCollection collection = db.getCollection("sampleColl");
MongoSample sample = new MongoSample();
sample.setId(new ObjectId());
sample.setField("SOmeFIELD");
sample.setData(new BasicDBObject("BASIC", "VAL"));
collection.save(new BasicDBObject("SampleENtity", sample));
System.out.println(sample);
}
}
public class MongoSample{
public ObjectId id;
public String field;
public BasicDBObject data;
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public BasicDBObject getData() {
return data;
}
public void setData(BasicDBObject data) {
this.data = data;
}
}
The saveObj method throws,
Exception in thread "main" java.lang.IllegalArgumentException: can't
serialize class mongo.test.MongoSample
at org.bson.BSONEncoder._putObjectField(BSONEncoder.java:205)
at org.bson.BSONEncoder.putObject(BSONEncoder.java:121)
at org.bson.BSONEncoder.putObject(BSONEncoder.java:67)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:231)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:197)
at com.mongodb.DBCollection.insert(DBCollection.java:73)
at com.mongodb.DBCollection.save(DBCollection.java:524)
at com.mongodb.DBCollection.save(DBCollection.java:504)
at mongo.test.MongoTest.saveObj(MongoTest.java:37)
at mongo.test.MongoTest.main(MongoTest.java:18)
I even tried by implementing java.io.Serializable for MongoSample
class. Why its throwing that exception.
PS: I am in java 7. But i tried with Java 6 too. The same result.
Any suggesstions!!!
Thanks