Я создал Data Class и храню данные с помощью PersistenceManager, но позже я редактировал свой класс данных, и теперь у меня проблема с данными общего доступа Я пытаюсь удалить эти объекты (pm.deletePersistent (е)), но I'have исключение:проблема с удалением объекта, используя PersistenceManager
javax.jdo.JDOUserException: Один или несколько экземпляров не могут быть удалены NestedThrowables: org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: класс "класс" java.lang .Class "не сохраняется. Это означает, что он либо не был расширен, либо что расширенная версия файла не находится в CLASSPATH (или скрыта с помощью незакрепленной версии), либо метаданные/аннотации для класса не найдено. " не persistable
, что мой данные Класс:
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 (е) не работает, потому что класс задачи изменились (одно поле изменен тип от пользователя в строку)
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?
плз помощь
приложите класс задач. Кстати, вы не хотели использовать deletePersistentAll, а не итератор? – Eugene
да, я сделал это раньше, и это не сработало – qazah
вы не могли бы отследить из этой строки 'if (results.iterator(). HasNext())' и опубликовать здесь содержимое *** результатов *** set , Также у вас есть усеченное сообщение об исключении, не могли бы вы опубликовать его в полной версии? С уважением
Eugene – Eugene