我正在清理掉我的谷歌應用程序引擎/數據存儲技能......並陷入了非常簡單的事情。谷歌數據存儲 - 更新實體問題
按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;
}
任何幫助表示讚賞!
「這不起作用!」不是一個好的聲明。在控制檯日誌中看到的確切錯誤是什麼? –
我在控制檯日誌中沒有看到任何東西 - 一切看起來都不錯,但是當我查看數據存儲區時(或嘗試將實體拉出,舊值仍然存在),更改不會持久保留 – JohnIdol