Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的更新不起作用?_Java_Google App Engine_Jdo - Fatal编程技术网

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

Java 为什么我的更新不起作用?,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我对GAE和JDO都是新手,我被如何更新数据所困扰 使用下面的代码,如果我对对象执行getAll(),然后执行get(),然后更改get()返回的对象的属性,然后执行getAll(),对getAll()的第二次调用将返回原始未更改的对象 我试着冲了一下,但似乎没用。如果重新启动jetty,则数据不会持久化 public class Notes { @SuppressWarnings("unchecked") public List<Note> getAll() { Pers

我对GAE和JDO都是新手,我被如何更新数据所困扰

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

我试着冲了一下,但似乎没用。如果重新启动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(); 
}
}
公共课堂笔记{
@抑制警告(“未选中”)
公共列表getAll(){
PersistenceManager pm=PMF.instance().getPersistenceManager();
Query Query=pm.newQuery(“按主题从com.uptecs.google1.model.Note订单中选择”);
return(List)query.execute();
}
公共作废添加(注){
PersistenceManager pm=PMF.instance().getPersistenceManager();
pm.makePersistent(注);
pm.flush();
}
公共便笺获取(长id){
PersistenceManager pm=PMF.instance().getPersistenceManager();
return(Note)pm.getObjectById(Note.class,id);
}
公共作废更新(注){
PersistenceManager pm=PMF.instance().getPersistenceManager();
pm.flush();
}
}

你看过AppEngine吗?他们在这方面有相当广泛的指导


听起来你不是持久对象。

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

也许实际上关闭PersistenceManager可能会有所帮助(更不用说内存使用的原因了!)

要全面了解这些文章:


2和3是最相关的

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

很奇怪,第3部分的链接的格式不同,并且不像其他两部分那样工作。。。好文章!很明显,我误读了谷歌文档中的某些内容,谢谢!