代码之家  ›  专栏  ›  技术社区  ›  Jay

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

  •  4
  • Jay  · 技术社区  · 15 年前

    我对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(); 
    }
    }
    
    4 回复  |  直到 15 年前
        1
  •  3
  •   Romain Hippeau    15 年前

    要获得良好的概述,请查看以下文章:
    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

    public void add(Note note) {
        PersistenceManager pm = getPersistenceManagerFactory()
                .getPersistenceManager();
        try {
            pm.makePersistent(note);
        } finally {
            pm.close();
        }
    }
    
        2
  •  1
  •   matt b    15 年前

    你看过外表了吗 Getting Started Guide ? 他们有一个相当广泛的指南 using the JDO API .

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

        3
  •  0
  •   Paras Adrian K    15 年前

        4
  •  0
  •   DataNucleus    15 年前

    也许关闭PersistenceManagers会有所帮助(更不用说内存使用的原因了!)