2010-08-18 86 views
3

我创建的数据类和存储数据使用PersistenceManager,但后来我编辑我的数据类,现在我有共享数据的问题 我想删除这个对象(pm.deletePersistent( E)),但I'have例外:删除对象的问题,使用PersistenceManager

javax.jdo.JDOUserException:一个或多个实例无法删除NestedThrowables:org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException:类 “类” 的java.lang .Class“是不可持久化的,这意味着它或者没有被增强,或者文件的增强版本不在CLASSPATH中(或者被未增强版本隐藏),或者类的元数据/注释是未找到。 “是不是可持久化

这是我的数据类:

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; 
    } 

这是我的.jsp文件,但deletePersistentAll(Task.class)或pm.deletePersistent(E)不起作用,因为类任务已经改变(一个场改变类型从用户到字符串)

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) {...} 

异常:java.lang.ClassCastException:java.lang.String中不能转换到com.google.appengine.api.users.User

我该如何清除PersistenceManager中的所有数据?

plz帮助

+0

请附上任务类。顺便说一句,你介意使用deletePersistentAll方法而不是迭代器? – Eugene 2010-08-18 13:10:18

+0

是的,我以前做过,并没有工作 – qazah 2010-08-18 19:15:42

+0

你会介意从这行'if(results.iterator()。hasNext())'跟踪并在这里发布***结果的内容***设置。你也截断了异常信息,请把它发布为完整版吗?问候
尤金 – Eugene 2010-08-18 22:53:22

回答

1
  1. 你尝试的flush()前 删除?
    1. 您是否尝试确定 e有pm类存储的类类型?

而且,张贴在这里的全部代码,请,或摘录为最小。

Registers Eugene