DataNucleus: ¿Cómo puedo realizar acciones automáticamente al confirmar una transacción?

StackOverflow https://stackoverflow.com/questions/763792

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.

¿Fue útil?

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í.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top