【问题标题】:AppEngine (JAVA): Updating recordAppEngine (JAVA):更新记录
【发布时间】:2010-02-18 14:14:55
【问题描述】:

我有以下代码 [in 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;
     }

【问题讨论】:

  • 有很多例子可以显示如何添加和删除,但我找不到任何用于编辑记录。

标签: java google-app-engine


【解决方案1】:

直接使用 PersistenceManager 持久化元素需要您关闭持久性管理器,如 the GAE doc clearly states

【讨论】:

  • 在 pm.makePersistent(u) 之后;我添加了 pm.close();但是还是不行
  • 你能对编辑进行硬编码吗,如 u.Company = "a hardcoded blah company";并测试它? (只是为了消除任何其他逻辑错误)我刚刚修复了我的应用程序的类似问题,pm.close() 确实解决了它
  • 当您说“它不起作用”时,您是否有任何相关日志,或者只是“什么也没发生”?在本地数据存储区(在开发模式下)的调试器中运行代码时,您会看到什么?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多