2010-02-12 85 views
1

我擁有實體對象,並且我想要獲取該對象。 目前,我使用將實體投入App Engine中的類類型

PersistenceManager.getObjectById(Object.class, Entity.getId()); 

這裏的問題是,它是當所有的屬性都已經在實體提供數據存儲的額外調用。

回答

3

這不是我認爲你正在尋找的銀彈;它需要一些咕嚕的工作來完成。

DAO代碼

DatastoreService datastore = DatastoreServiceFactory 
.getDatastoreService(); 
List<Foo> results = new ArrayList<Foo>(); 

Query query = new Query("Foo"); 
List<Entity> entities = datastore.prepare(query).asList(
    FetchOptions.Builder.withDefaults()); 

for (Entity entity : entities) { 
    results.add(new Foo(entity)); 
} 

類Foo

public Foo(Entity entity) { 
    // TODO get properties from entity and populate POJO 
    this.bar=entity.getProperty("bar"); 
    //get the key 
    //if the @PrimaryKey is a Long use this 
    this.id=entity.getKey().getId(); 
    //if the @PrimaryKey is a String use this 
    this.id=entity.getKey().getName(); 
} 

a way to convert appengine datastore Entity to my object?

+0

這是一個討厭的解決辦法,但它看起來像它可能工作。在世界完美之前,我會使用它。 +1。但是當對象包含另一個POJO列表時會發生什麼?即在Foo內有'List bars' –

相關問題