Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
AppEngine(JAVA):更新记录_Java_Google App Engine - Fatal编程技术网

AppEngine(JAVA):更新记录

AppEngine(JAVA):更新记录,java,google-app-engine,Java,Google App Engine,我有以下代码[在doPost()中]来编辑现有记录。它不会给出任何错误,但记录未保存。有什么想法吗?或者基于单个唯一字段更新现有记录的最佳方法是什么? if(sAction.compareToIgnoreCase("S")==0) { String email = req.getParameter("Email"); PersistenceManager pm = PMF.get().getPersistenceManager();

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

     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;
     }
if(sAction.compareTignoreCase(“S”)==0)
{
字符串email=req.getParameter(“email”);
PersistenceManager pm=PMF.get().getPersistenceManager();
Query Query=pm.newQuery(SMSUser.class);
query.setFilter(“Email==pEmail”);
查询.申报参数(“字符串pEmail”);
列表用户=(列表)查询。执行(电子邮件);
如果(!users.isEmpty())
{
Iterator it=users.Iterator();
SMSUser u=(SMSUser)it.next();
u、 ContractPerson=req.getParameter(“ContractPerson”);
u、 公司=请求获取参数(“公司”);
u、 地址=请求获取参数(“地址”);
u、 电话=请求获取参数(“电话”);
u、 Aid=req.getParameter(“Aid”);
u、 Pin=请求参数(“Pin”);
u、 SenderId=req.getParameter(“SenderId”);
u、 Url=req.getParameter(“Url”);
u、 运算符=Integer.parseInt(请求getParameter(“运算符”));
总理(美);
}
返回;
}

直接使用PersistenceManager持久化元素需要关闭持久化管理器,因为。

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

有很多例子来说明如何添加和删除,但我找不到任何用于编辑记录的例子;我添加了pm.close();但是它仍然不起作用。你能硬编码一个编辑吗,比如,u.Company=“硬编码的无聊公司”;然后测试它?(只是为了消除任何其他逻辑错误)我刚刚修复了我的应用程序的一个类似问题,pm.close()确实解决了这个问题。当你说“它不工作”,你有没有相关的日志,或者只是“什么都没发生”?在本地数据存储上的调试器中运行代码时(在开发模式下),您会看到什么?