3

我宣布一个实体的方式如下:如何通过id(Long值)检索Google Appengine对象?

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

现在我想使用id来检索对象。我尝试从Google Appengine数据查看器中通过“SELECT * FROM MyEntity Where id = 382005”或通过servlet中的查询进行管理。我没有得到任何结果。但我知道肯定与id的对象存在(我做了一个jsp查询数据库中的所有对象,并显示在数据库中)。

那么我的查询出了什么问题?我是否查询错误的字段? Google Appengine Data Viewer将字段“ID /名称”命名为“id = 382005”。我必须用这个名字来查询吗?我试过,但它没有工作:(

回答

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();