Estoy experimentando con Google App Engine y la opción persistente JDO. Me gustaría saber si es posible mapear un objeto transitorio a un objeto persistente. ¿O algo para actualizar el objeto persistente con el uso de un objeto transitorio?JDO - Actualizando un Objeto
que los ejemplos de codificación Veo el siguiente fragmento de código para actualizar objetos:
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();
}
}
pero esto no es lo que quiero, ¿Alguien sabe si puedo actualizar el objeto entero como APP hace: objeto. actualizar();
así que me gustaría algo como esto:
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 no funciona si el objeto ya tiene el conjunto de ID (por ejemplo, cuando se lee previamente desde el almacén de datos, o cuando se rellena a partir de un formulario web). – pjesi
Si el objeto se lee del almacén de datos y está en la misma transacción, no tiene sentido llamar a makePersistent, los cambios se ponen automáticamente en el almacén de datos. Si el objeto se lee desde el almacén de datos y luego se separa y se cambia algo, llamar a makePersistent ciertamente "funciona" ya que adjunta los cambios. Si tiene problemas específicos, le sugiero que los informe al grupo appengine de Google – DataNucleus