Получение элемента по идентификатору в JDO Google App Engine - PullRequest
1 голос
/ 19 апреля 2011

У меня проблема при попытке найти один элемент по идентификатору.Класс сущности таков:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Test{

   @PrimaryKey
   private String name;

//..and so on.

В этом случае значение «имя» действует как идентификатор.Я использую этот запрос, чтобы найти элемент:

           PersistenceManager pm = PMF.get().getPersistenceManager();

           Query q = pm.newQuery(Test.class);
           q.setFilter("name == " + id);

           //String query = "SELECT FROM " + Test.class.getName() + "WHERE name == " + id;
           Test test = (Test) q.execute();

           return category;

Предполагается, что id - это строковое значение, отправленное в качестве параметра другим методом.

Но он не получает никаких данных.Кроме того, создается исключение: java.lang.ClassCastException: org.datanucleus.store.appengine.query.StreamingQueryResult не может быть приведен к com.santiagopoli.gapptest.domain.Test

* 1012Комментированный запрос также не работает.

Я надеюсь, что кто-нибудь может мне помочь.Обидно, что чего-то такого базового сложно достичь.В других реализациях sql это будет легко, если набрать «select * from Test, где id =».Спасибо!

1 Ответ

2 голосов
/ 12 июля 2011

Я только что исправил.

Попробуйте это ...

Test t = pm.getObjectById(Test.class, id);

справка ... http://code.google.com/intl/us/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata.html

...