Ja, obwohl nicht so trivial, wie Sie wahrscheinlich erwartet hatten.
Einschränkungen
- 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.
- 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
- Sie werden in die aussehen wollen appengine-mapreduce project zu eine Implementierung bekommen, die können komplett mit mehr als 10 Minuten Wanduhr Zeit.
- 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));
}
}
}