Я стираю свои навыки работы с google app-engine / datastore ... и зацикливаюсь на чем-то очень простом.
В соответствии с примером в документации GAE Я пытаюсьобновите сущность следующим образом:
// 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();
Это не работает (так как изменения не сохраняются, но нет ошибок или чего-либо еще)!
В то же время я обнаружил, что если я создаю новую сущность с тем же идентификатором, изменения сохраняются:
// 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;
}
Любая помощь приветствуется!