在Java中加载_id MongoDB my Object

时间:2012-10-30 14:33:37

标签: java mongodb

JAVA 我有以下问题。 我有一个移动对象。

Calss object mobile
private ObjectId _id;
private String number;
private String nroMatricula;

获取和设置等

恢复MongoDB时。

String id = "5089e5fde4b07bf6f368366b";
DBObject soid = new BasicDBObject("_id", new ObjectId(id));
String s = MongoAccess.getSingleton().GetOneValueByKey("mobile", soid);
Mobile m = js.fromJson(s, Mobile.class);

public String GetOneValueByKey(String thecollection, DBObject key)
{
    String result = null;
    try {
        DBCollection collection = MDB.getCollection(thecollection); 
     result = JSON.serialize(collection.findOne(key));
    } catch (Exception e) {
        Logger.getLogger(MongoAccess.class.getName()).log(Level.SEVERE, e.toString());
    }
    return result;
}

正确恢复数据但是_id属性。 我加载了数据库中的数据,但它生成了一个新的id。 这应该是正确的_id“5089e5fde4b07bf6f368366b”,但这不是对象的指控。 我可以帮忙。

1 个答案:

答案 0 :(得分:2)

解决方案

JsonDeserializer<ObjectId> des = new JsonDeserializer<ObjectId>() {

                    @Override
                    public ObjectId deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException {
                        return new ObjectId(je.getAsJsonObject().get("$oid").getAsString());
                    }
                };

                Gson gson = new GsonBuilder().registerTypeAdapter(ObjectId.class, des).create();