java - 为什么我的更新不起作用?

标签 java google-app-engine jdo

我是 GAE 和 JDO 的新手,我对如何更新数据感到困惑。

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

我尝试执行 flush() 但似乎没有帮助。如果我重新启动 jetty,数据将不会保留。

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(); 
}
}

最佳答案

要全面了解这些文章:
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();
    }
}

关于java - 为什么我的更新不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239076/

相关文章:

java - 是否有任何有效的方法可以保持运行方法中包含 ActionListener 的线程处于 Activity 状态,直到发生单击事件?

java - 如何在 Netbeans 中使用 java 将 JCheckBox 放置在 Jtable 中数据库显示的每个数据旁边?

java - JSP 页面和 Java Servlet 重用变量名的约定是什么?

python - 如何从列表中将五个元素组成一组?

java - 在 Google App Engine 上使用 JDO 更新 "nested"对象

java - 在没有反射 API 的情况下通过存储在字符串中的名称调用方法?

java - 如何在没有数组的情况下对字符串进行排序(无论大小写)

Eclipse:导入 Maven 项目,缺少 maven-gae-plugin

jdoconfig.xml 中的 MongoDb ConnectionURL

java - App Engine 上的 getObjectById