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