2010-12-09 4 views

Antwort

2

Ja, obwohl nicht so trivial, wie Sie wahrscheinlich erwartet hatten.

Einschränkungen

  1. Will time out if it takes more then 30 seconds, , wenn Sie es als eine Aufgabe ausführen, in denen Fall wird es time out if it takes more then 10 minutes.
  2. Es gibt keinen besseren Weg, um nur die Entitäten zu erhalten, die seit Sie can't query on a property that doesn't exist aktualisiert werden müssen.

Umgehungen

  1. Sie werden in die aussehen wollen appengine-mapreduce project zu eine Implementierung bekommen, die können komplett mit mehr als 10 Minuten Wanduhr Zeit.
  2. Keine bekannt.

-Code

void updateNullBarField() { 
    final Text DEFAULT_BAR = new Text("bar"); 

    PersistenceManagerFactory pmfInstance = JDOHelper 
    .getPersistenceManagerFactory("transactions-optional"); 
    PersistenceManager pm = pmfInstance.getPersistenceManager(); 
    Query query = pm.newQuery(Foo.class); 
    @SuppressWarnings("unchecked") 
    Collection<Foo> foos = pm.detachCopyAll((List<Foo>) query.execute()); 

    for (Foo foo : foos) { 
    if (foo.bar == null) { 
     foo.bar = DEFAULT_BAR; 
     pm.detachCopy(pm.makePersistent(foo)); 
    } 
    } 
} 
Verwandte Themen