2010-08-18 2 views
3

Je suis créé Data Class et stocker des données en utilisant PersistenceManager, mais plus tard, j'ai édité ma classe de données et maintenant j'ai un problème avec les données de partage J'essaie de supprimer cet objet (pm.deletePersistent (e)), mais exception I'have:problème avec la suppression d'objet, en utilisant PersistenceManager

javax.jdo.JDOUserException: ne pouvaient être NestedThrowables supprimés Une ou plusieurs instances: org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: La classe "La classe" java.lang .Class "n'est pas persistante. Cela signifie qu'elle n'a pas été améliorée, ou que la version améliorée du fichier n'est pas dans CLASSPATH (ou est cachée par une version non améliorée), ou que les méta-données/annotations de la classe sont pas trouvé. " n'est pas Persistable

qui est ma classe de données:

import com.google.appengine.api.datastore.Key; 
import java.util.ArrayList; 
import java.util.Date; 
import javax.jdo.annotations.IdGeneratorStrategy; 
import javax.jdo.annotations.PersistenceCapable; 
import javax.jdo.annotations.Persistent; 
import javax.jdo.annotations.PrimaryKey; 

@PersistenceCapable 

public class Task { 
     @PrimaryKey 
     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
     private Key key; 

    @Persistent 
    private String author; 

    @Persistent 
    private String task; 

    @Persistent 
    private Date date; 

    @Persistent 
    private String note; 

    @Persistent 
    private ArrayList<String> label; 

    @Persistent 
    private int numberoflist; 





    public Task (String author, String task,String note, Date date, int numberoflist) 
    { 
     this.author=author; 
     this.task=task; 
     this.date=date; 
     this.numberoflist=numberoflist; 
     this.note=note; 
    } 

qui est mon fichier .jsp, mais deletePersistentAll (Task.class) ou pm.deletePersistent (e) ne fonctionne pas parce que la classe de travail a changé (un champ changé de type d'un utilisateur à cordes)

try{     
     PersistenceManager pm = PMF.get().getPersistenceManager(); 
     pm.flush(); 
     Query query = pm.newQuery(Task.class); 
     query.declareParameters("String authorParam"); 
     List<Task> results = (List<Task>) query.execute("[email protected]"); 
      try 
      { 
       if (results.iterator().hasNext()) 
       { 
        for (Task e : results) 
        { 
         pm.deletePersistent(e); 
         %> 
         <p><%= e.getTask() %> </p> 
         <% 
        } 
       }else 
        { 
         %> 
         <p>Empty</p> 
         <% 
        } 
       } finally { 
       query.closeAll();} 
      pm.close(); 

     }catch(Exception ex) {...} 

exception: java.lang.ClassCastException: java.lang.String ne peut pas être jeté à com.google.appengine.api.users.User

Que dois-je faire pour effacer toutes les données de PersistenceManager?

plz aide

+0

Veuillez joindre une classe de tâches. btw cela vous dérange-t-il d'utiliser deletePersistentAll au lieu de itérateur? – Eugene

+0

oui je l'ai fait avant et cela n'a pas fonctionné – qazah

+0

cela vous dérangerait de tracer à partir de cette ligne 'if (results.iterator(). HasNext())' et afficher ici le contenu de *** résultats *** ensemble . Vous avez également un message d'exception tronqué. Pourriez-vous l'afficher dans une version complète? Cordialement
Eugene – Eugene

Répondre

1
  1. Avez-vous essayé flush() avant suppression?
    1. Avez-vous essayé de déterminer la e est de type classe h stocke?

En outre, après ici le code complet s'il vous plaît, qu'extrait ou comme minimum.

Cordialement Eugene

Questions connexes