2010-02-18 82 views
0

我有以下代码[在doPost()]中编辑现有记录。它不会给出任何错误,但记录没有保存。任何想法?或什么是基于单个唯一字段更新exsting记录的最佳方式?AppEngine(JAVA):更新记录

 if(sAction.compareToIgnoreCase("S")==0) 
    { 

     String email = req.getParameter("Email"); 

     PersistenceManager pm = PMF.get().getPersistenceManager();    
     Query query = pm.newQuery(SMSUser.class); 
     query.setFilter("Email == pEmail"); 
     query.declareParameters("String pEmail"); 
     List<SMSUser> users = (List<SMSUser>) query.execute(email); 
     if(!users.isEmpty()) 
     { 
      Iterator it = users.iterator(); 
      SMSUser u = (SMSUser) it.next(); 
      u.ContractPerson = req.getParameter("ContractPerson"); 
      u.Company = req.getParameter("Company"); 
      u.Address = req.getParameter("Address"); 
      u.Phone = req.getParameter("Phone"); 
      u.Aid = req.getParameter("Aid"); 
      u.Pin = req.getParameter("Pin"); 
      u.SenderId = req.getParameter("SenderId"); 
      u.Url = req.getParameter("Url"); 
      u.Operater = Integer.parseInt(req.getParameter("Operater")); 

      pm.makePersistent(u); 
     } 
     return; 
    } 
+0

有很多例子来说明如何添加和删除,但我找不到任何编辑记录。 – Manjoor 2010-02-18 15:41:41

回答

0

我已经添加了getter/setter函数,它正在工作。仍然想知道为什么? 但是我的问题已经解决了。

1

坚持直接使用的PersistenceManager要求你关闭持久性管理器,如the GAE doc clearly states的元素。

+0

pm.makePersistent(u); 我已添加 pm.close(); 但它仍然不起作用 – Manjoor 2010-02-19 05:51:16

+0

你可以硬编码一个编辑,如在 u.Company =“一个硬编码公司”; 并测试它? (只是为了消除任何其他的逻辑错误) 我刚刚修复了一个类似的问题,我的应用程序和pm.close()真的解决了它 – aldrin 2010-02-19 11:09:55

+0

我已经尝试了几个小时后,但它不起作用 – Manjoor 2010-02-19 12:40:06