使用PersistenceManager删除对象的问题

时间:2010-08-18 11:40:34

标签: java jsp jdo

我使用PersistenceManager创建了数据类并存储数据,但后来我编辑了我的数据类,现在我对共享数据有问题 我正在尝试删除这些对象(pm.deletePersistent(e)),但我有例外:

  

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)不起作用,因为类Task已更改(一个字段从User更改为String)

 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("user@mail");
            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无法强制转换为com.google.appengine.api.users.User

我要做什么来清除PersistenceManager中的所有数据?

plz help

1 个答案:

答案 0 :(得分:1)

  1. 您之前尝试过 flush()吗? 删除?
    1. 你有没有尝试确定 e 有pm存储的类类型吗?
  2. 另外,请在此处发布完整代码,或最低限度的代码段。

    此致 尤金