我已按以下方式宣布实体:
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”。我是否必须使用此名称查询?我已经尝试但是没有成功:(
答案 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();