English 中文(简体)
更新与JDO和GAE的物体
原标题:updating an object with JDO and GAE
  • 时间:2009-09-08 16:27:50
  •  标签:

因此,我用Wicket制作一个小型的网吧,该台将运行在角角灯上。 使用JDO的Im,到目前为止,没有任何问题持续存在数据(数据)或查询数据。 Maybe 我马没有一些基本东西,我试图拿到其中一个顽固的物体,改变两个价值观,然后我希望在数据库中更新修改的反对。

我有一个用户反对。 我可以问这个问题,因此,我知道这个目标本身有正确的说明。

正在更新的Im法典是:

final PersistenceManager pm = PMF.get().getPersistenceManager();
Transaction trans = pm.currentTransaction();
try{ 
  trans.begin();
  user.setLoginCount(user.getLoginCount()+1);
  user.setLastLoginTime(new Date());
  trans.commit();
}finally{
  if (trans.isActive()) {
    trans.rollback();
    System.out.println("----transaction rollback - submitLogin----");
  }
  pm.close();
}

在此,我用户对我想要改变的这两个事项表示反对......

@Persistent
private Date lastLoginTime;

@Persistent
private int loginCount = 0;

I do a query right after this code and it returns the same object before I changed values.
Any ideas what I m doing wrong?

最佳回答

By default, JDO objects are only valid when the PersistenceManager that created them is open. You say you have already called makePersistent() on the user object. That means you had another PersistenceManager open before the one you show us in the code above. When you closed that PersistenceManager (presumably you closed it), your object became invalid,(informally speaking.)

根据你们想要做的工作,你们有两种选择。

  1. 页: 1 您的用户标语允许其在原有的持久性管理人范围以外生活。

  2. 你可以拿到新发明者的新版本。

选择2:

trans.begin();
User user = (User) pm.getObjectById(User.class,"userkeyhere");
user.setLoginCount(user.getLoginCount()+1);
user.setLastLoginTime(new Date());
trans.commit();
问题回答

暂无回答




相关问题
热门标签