在Google App Engine JDO中通过id获取元素

时间:2011-04-19 19:46:32

标签: google-app-engine jdo gql

尝试查找单个元素时遇到问题 通过id。实体类是这样的:

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

   @PrimaryKey
   private String name;

//..and so on.

在这种情况下,值“name”就像一个id。我正在使用它 查询以查找元素:

           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

评论的查询也不起作用。

我希望有人能帮助我。遗憾的是基本的东西 很难实现。在其他sql实现中,它将很容易 输入“select * from Test where id =”。谢谢!

1 个答案:

答案 0 :(得分:2)

我刚修好了。

试试这个......

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

...参考 http://code.google.com/intl/us/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata.html