Класс "класс" com.google.appengine.api.datastore.Key "не является персистентным - PullRequest
0 голосов
/ 14 августа 2011

Я пытаюсь удалить несколько объектов, используя Список ключей, т.е.:

List keys = obj.getKeys(); pm.deletePersistentAll(keys);

Однако, когда я пытаюсь удалить объекты, я получаю следующее исключение:

javax.jdo.JDOUserException: One or more instances could not be deleted
at org.datanucleus.jdo.JDOPersistenceManager.deletePersistentAll(JDOPersistenceManager.java:809)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.access$301(DatastoreJDOPersistenceManager.java:39)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager$2.call(DatastoreJDOPersistenceManager.java:112)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager$2.call(DatastoreJDOPersistenceManager.java:110)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager$BatchManagerWrapper.call(DatastoreJDOPersistenceManager.java:125)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager$BatchManagerWrapper.access$200(DatastoreJDOPersistenceManager.java:121)
at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.deletePersistentAll(DatastoreJDOPersistenceManager.java:110)

   NestedThrowablesStackTrace: org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "com.google.appengine.api.datastore.Key" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found." is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data for the class is not found.
at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:241)

Кто-нибудь испытывал это раньше?Я убедился, что мои классы улучшены и все классы помечены как PersistenceCapable.

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

Чтобы удалить объект по ключу, попробуйте

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
ds.delete(key)
0 голосов
/ 14 августа 2011

Вы можете удалить только постоянный объект (то, что вы передаете в pm.deletePersistentAll).«Ключ» не является постоянным объектом

...