Playframework 游戏中的Morphia我如何管理更新?

Playframework 游戏中的Morphia我如何管理更新?,playframework,morphia,Playframework,Morphia,如果我有一个类似于“Update(jsonobjectbody)”的调用,其目的是获取一个现有文档并更新部分文档,但不是全部文档,那么它是如何工作的 { _id: "12345", name: "my name", email: "me@here.org", privatefield: "secret data" } body = { _id: "12345", name: "my name", email: "me@here.org" } static pu

如果我有一个类似于“Update(jsonobjectbody)”的调用,其目的是获取一个现有文档并更新部分文档,但不是全部文档,那么它是如何工作的

{ 
  _id: "12345",
  name: "my name",
  email: "me@here.org",
  privatefield: "secret data"
}
body = { 
  _id: "12345",
  name: "my name",
  email: "me@here.org"
}

static public void Update(JsonObject body){
   Gson gs = new GsonBuilder().create();
   MyModel m = gs.fromJson(body, MyModel.class);
   // this call erases "privatefield" from the document
   m.Save();
}
如果上面是当前存储的文档,并且更新只允许包含“名称”和“电子邮件”,那么该如何工作

{ 
  _id: "12345",
  name: "my name",
  email: "me@here.org",
  privatefield: "secret data"
}
body = { 
  _id: "12345",
  name: "my name",
  email: "me@here.org"
}

static public void Update(JsonObject body){
   Gson gs = new GsonBuilder().create();
   MyModel m = gs.fromJson(body, MyModel.class);
   // this call erases "privatefield" from the document
   m.Save();
}
如果使用Gson().fromJson(…)调用,则创建的对象缺少privatefield值。现在我需要手动合并它们。如果更新后的电子邮件值故意为空怎么办?合并是如何工作的


我有种感觉,我需要手动映射所有这些东西,这看起来太反游戏了

我提交了一个问题,请求PlayMorphia中的一个功能来解决这个问题: