DataNucleus: Come si esegue automaticamente le azioni quando commit di una transazione?
-
11-09-2019 - |
Domanda
Si consideri avere un'applicazione utilizzando DataNucleus con la seguente struttura di persistenza:
Si dispone di una classe che ha due attributi come creato (data) e lastUpdate (Data): Come si compila automaticamente gli attributi, con i valori appropriati quando un oggetto di questa classe sta per essere commesso? valori appropriati sarebbero impostando entrambi, creato e lastUpdate per l'ora corrente quando un oggetto viene inserito nel database e proprio aggiornamento di lastUpdate quando ha cambiato.
Soluzione
ho capito io stesso ora.
È necessario creare 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);
}
}
}
e quindi registrarlo dentro di te PersistenceManager ...
PersistenceManager pm = pmf.getPersistenceManager();
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null);
Ho trovato la soluzione nella DataNucleus accesso plaftorm manuale che io non ho riconosciuto fino ad ora. Il manuale online sembra un po 'complessa per me.