2010-08-18 129 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