Приведение сущности в ее тип класса на App Engine - PullRequest
1 голос
/ 12 февраля 2010

У меня есть объект Entity, и я хочу получить объект.В настоящее время я использую

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

Проблема в том, что это дополнительный вызов хранилища данных, когда все свойства уже доступны в сущности.

1 Ответ

3 голосов
/ 08 января 2011

Это не серебряная пуля, я думаю, вы искали; для этого требуется некоторая тяжелая работа.

Код 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();
}

как конвертировать сущность хранилища данных appengine в мой объект?

...