2010-02-18 3 views
0

J'ai le code suivant [dans doPost()] pour éditer un enregistrement existant. Il ne donne aucune erreur mais enregistre pas enregistré. Une idée? ou quelle est la meilleure façon de mettre à jour l'enregistrement exsting basé sur un seul champ unique?AppEngine (JAVA): Mise à jour de l'enregistrement

 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

Il y a beaucoup d'exemples pour montrer comment ajouter et supprimer mais je n'ai pas pu trouver pour éditer des dossiers. – Manjoor

Répondre

0

J'ai ajouté des fonctions getter/setter et cela fonctionne. Je me demande toujours pourquoi ??? Cependant, mon problème a été résolu.

1

Persistant un élément en utilisant directement la PersistenceManager vous oblige à fermer le gestionnaire de persistence, comme the GAE doc clearly states.

+0

après pm.makePersistent (u); J'ai ajouté pm.close(); Mais cela ne fonctionne toujours pas – Manjoor

+0

pouvez-vous coder en dur une édition, comme dans, u.Company = "a hardcoded blah company"; et testez-le? (Juste pour éliminer toutes les autres erreurs de logique) Je viens de résoudre un problème similaire avec mon application et pm.close() vraiment le résoudre – aldrin

+0

Je l'ai essayé il y a quelques heures, mais ça ne fonctionne pas – Manjoor