DataNucleus: ¿Cómo puedo realizar acciones automáticamente al confirmar una transacción?
-
11-09-2019 - |
Pregunta
Considere tener una aplicación utilizando DataNucleus con la siguiente estructura persistencia:
Usted tiene una clase que tiene dos atributos como creado (Fecha) y lastUpdate (Fecha): ¿Cómo se rellena automáticamente los atributos con los valores apropiados cuando un objeto de esta clase va a estar comprometido? Los valores adecuados serían fijando tanto, creado y lastUpdate a la hora actual cuando se inserta un objeto en la base de datos y simplemente actualizar lastUpdate cuando tiene cambiado.
Solución
he descubierto a mí mismo ahora.
Es necesario crear un InstanceLifecycleListener ...
public class BasicEntityLifecycleListener implements StoreLifecycleListener {
public void postStore(InstanceLifecycleEvent evt) {
}
public void preStore(InstanceLifecycleEvent evt) {
if((PersistenceCapable)evt.getSource() instanceof BasicEntity) {
BasicEntity obj = (BasicEntity)evt.getSource();
Date now = new Date();
if(JDOHelper.isNew(obj))
obj.setCreated(now);
obj.setLastUpdate(now);
}
}
}
y luego registrarlo en su interior PersistenceManager ...
PersistenceManager pm = pmf.getPersistenceManager();
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null);
He encontrado la solución en el DataNucleus acceso Plaftorm manual de cuales yo no he reconocido hasta ahora. El manual en línea parece un poco complejo para mí.