Ich experimentiere mit der Google App Engine und der persistenten Option JDO. Ich würde gerne wissen, ob es möglich ist, ein transientes Objekt einem persistenten Objekt zuzuordnen? Oder etwas, um das persistente Objekt mit einem transienten Objekt zu aktualisieren?JDO - Aktualisieren eines Objekts
ich die Codierung Beispiele i das folgende Stück Code siehe Objekte zu aktualisieren:
public void updateEmployeeTitle(User user, String newTitle) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Employee e = pm.getObjectById(Employee.class, user.getEmail());
if (titleChangeIsAuthorized(e, newTitle) {
e.setTitle(newTitle);
} else {
throw new UnauthorizedTitleChangeException(e, newTitle);
}
} finally {
pm.close();
}
}
Aber das ist nicht das, was ich will, weiß jemand, wenn ich das ganze Objekt aktualisieren wie JPA tut: Objekt. aktualisieren();
So würde ich so etwas wie dies mag:
public User update(User u) {
PersistenceManager pm = PMF.get().getPersistenceManager();
User usr;
try {
usr = pm.getObjectById(User.class, u.getId());
// copy transient object u to persist object usr.
// on update of usr all changes in object u are persistent.
} finally {
pm.close();
}
return u;
}
makePersistent funktioniert nicht, wenn das Objekt bereits den ID Satz hat (beispielsweise wenn die zuvor aus dem Datenspeicher zu lesen, oder wenn von einer Bahnform aufgefüllt). – pjesi
Wenn das Objekt aus dem Datenspeicher gelesen wird und sich in der gleichen Transaktion befindet, ist der Aufruf von makePersistent sinnlos. Änderungen werden automatisch in den Datenspeicher verschoben. Wenn das Objekt aus dem Datenspeicher gelesen und dann losgelöst wird und Sie etwas ändern, dann funktioniert das Aufrufen von makePersistent mit Sicherheit, da es die Änderungen anfügt. Wenn Sie bestimmte Probleme haben, schlage ich vor, dass Sie sie der Google-Appengine-Gruppe melden – DataNucleus