【发布时间】:2011-06-30 00:09:26
【问题描述】:
我正在学习我的谷歌应用引擎/数据存储技能......并陷入非常简单的事情。
根据the example on the GAE documentation,我正在尝试按如下方式更新实体:
// persistence and business logic
PersistenceManager pm = PMF.get().getPersistenceManager();
// get it
NickName n = pm.getObjectById(NickName.class, nicknameId);
// update fields
n.givenName = "new name";
n.nickName = "new nickname";
n.timeStamp = new Date();
// close manager to persist changes
pm.close();
这不起作用(因为更改没有持久化,但没有错误或其他任何东西)!
同时我发现,如果我创建一个具有相同 ID 的新实体,更改会保持不变:
// persistence and business logic
PersistenceManager pm = PMF.get().getPersistenceManager();
NickName n = new NickName("new name", "new nickname", new Date());
// set id
n.id = nicknameId;
pm.makePersistent(n);
pm.close();
我觉得我第一次接触应用引擎和数据存储时已经解决了这个问题。
这是我的实体的样子:
@PersistenceCapable
public class NickName {
public NickName(String name, String nickname, Date timestamp) {
this.givenName = name;
this.nickName = nickname;
this.timeStamp = timestamp;
}
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
public String id;
@Persistent
public String givenName;
@Persistent
public String nickName;
@Persistent
public Date timeStamp;
}
任何帮助表示赞赏!
【问题讨论】:
-
“这行不通!”不是一个好的说法。您在控制台日志中看到的确切错误是什么?
-
我在控制台日志中看不到任何东西 - 一切似乎都很好,但是当我查看数据存储时更改没有保留(或尝试将实体拉出,旧值仍然存在)
标签: java google-app-engine google-cloud-datastore jdo