【问题标题】:Why do my updates not work?为什么我的更新不起作用?
【发布时间】:2011-03-15 10:08:15
【问题描述】:

我是 GAE 和 JDO 的新手,我不知道如何更新数据。

使用下面的代码,如果我对一个对象执行 getAll(),然后是 get(),然后更改 get() 返回的该对象的属性,然后是 getAll(),第二次调用 @987654324 @ 返回原始未更改的对象。

我尝试做一个 flush() 但这似乎没有帮助。如果我重新启动码头,数据不会持久化。

public class Notes {

@SuppressWarnings("unchecked")
public List<Note> getAll() {
    PersistenceManager pm = PMF.instance().getPersistenceManager();

    Query query = pm.newQuery("select from com.uptecs.google1.model.Note order by subject");
    return (List<Note>) query.execute();
}

public void add(Note note) {
    PersistenceManager pm = PMF.instance().getPersistenceManager();
    pm.makePersistent(note);
    pm.flush();
}

public Note get(long id) {
    PersistenceManager pm = PMF.instance().getPersistenceManager();
    return (Note)pm.getObjectById(Note.class, id);
}

public void update(Note note) {
    PersistenceManager pm = PMF.instance().getPersistenceManager();
    pm.flush(); 
}
}

【问题讨论】:

    标签: java google-app-engine jdo


    【解决方案1】:

    如需全面了解,请查看以下文章:
    http://www.ibm.com/developerworks/java/library/j-gaej1/
    http://www.ibm.com/developerworks/java/library/j-gaej2/index.html
    http://www.ibm.com/developerworks/java/library/j-gaej3.html

    2 和 3 最相关。

    public void add(Note note) {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        try {
            pm.makePersistent(note);
        } finally {
            pm.close();
        }
    }
    

    【讨论】:

    • 很奇怪,第 3 部分的链接格式不同,而且不能像其他两个那样工作……但是好文章!
    • 我显然误读了 Google 文档中的某些内容,谢谢!
    【解决方案2】:

    您看过 AppEngine Getting Started Guide 吗?他们在using the JDO API 上有相当广泛的指南。

    听起来你不是 calling close() after modifying 持久对象。

    【讨论】:

      【解决方案3】:

      我对 JDO 不是很熟悉,但是在刷新之前您不需要 commit() 或 save() 数据吗?我认为只有这些语句会保留在数据库中。

      【讨论】:

        【解决方案4】:

        也许实际上关闭您的 PersistenceManagers 可能会有所帮助(不要介意内存使用的原因!)

        【讨论】:

          猜你喜欢
          • 2023-03-31
          • 1970-01-01
          • 2016-10-18
          • 2013-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-03
          相关资源
          最近更新 更多