如何使用java更新谷歌应用引擎中的数据存储的字段值

时间:2012-12-28 13:06:03

标签: java google-app-engine google-cloud-datastore

我在数据存储中创建了一个Login(Kind)。在登录中,我创建了两个字段username和passsword。当用户更改密码时,我想更新数据存储区内的字段值。但是当我使用这段代码时,

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity passwordchange = new Entity("Login");
passwordchange.setProperty("password", "admin@123");
datastore.put(passwordchange);

它会创建一个新行并插入密码“admin @ 123”,而不是在同一行中更新新密码。

有人可以建议我如何更新字段的数据。

1 个答案:

答案 0 :(得分:21)

如果要更新实体,您有两种选择:

一个。通过其ID从数据存储区中检索此实体。更新属性。把它放回数据存储区。

try {
    loginEntity = datastore.get(KeyFactory.createKey("login", id));
    loginEntity.setProperty("password", "admin@123");
    datastore.put(loginEntity);
} catch (EntityNotFoundException e) {
// This should never happen
}

B中。使用相同的ID创建新实体。添加所有属性。放入数据存储区 - 它将覆盖旧实体。

Entity loginEntity = new Entity("login", id);
loginEntity.setProperty("password", "admin@123");
datastore.put(loginEntity);

在这两个示例中,id是您要更改的实体的ID。

我希望您不要将密码存储为字符串。