如何通过id(长值)检索Google Appengine对象?

时间:2010-05-30 14:16:44

标签: java google-app-engine primary-key google-cloud-datastore

我已按以下方式宣布实体:

public class MyEntity {
 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 private Long id;
 @Persistent
 private String text;
        //getters and setters
}

现在我想使用id检索对象。我尝试使用“SELECT * FROM MyEntity where id = 382005”或通过servlet中的查询从Google Appengine Data Viewer管理它。我没有得到任何结果。但我确定知道存在id的对象(我创建了一个jsp,它查询数据库中的所有对象并在数据库中显示它们)。

那我的查询有什么问题?我在查询错误的字段吗? Google Appengine Data Viewer将字段命名为“ID / name”,其值为“id = 382005”。我是否必须使用此名称查询?我已经尝试但是没有成功:(

1 个答案:

答案 0 :(得分:4)

您可以在下面使用,因为您使用主键查询:

MyEntity yourEntity = entityManager.find(MyEntity.class, yourId);

请注意,这也应该有效,但如果您根据主键进行搜索,则更容易使用find():

Query query = entityManager.createQuery(
    "SELECT m FROM MyEntity m WHERE id = :id");
query.setParameter("id", yourId);

MyEntity yourEntity = (MyEntity) query.getSingleResult();