Datanucleus: Wie kann ich Aktionen automatisch ausführen, wenn eine Transaktion zu begehen?

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

Frage

Betrachten Sie eine Anwendung, die unter Verwendung von Datanucleus mit folgenden Persistenz Struktur:

Sie haben eine Klasse, die zwei Attribute wie hat erstellt (Datum) und lastupdate (Datum): Wie füllen Sie automatisch diese Attribute mit den entsprechenden Werten, wenn ein Objekt dieser Klasse werden begangen wird? Geeignete Werte beide werden Einstellung würde, erstellt und lastupdate auf die aktuelle Zeit, wenn ein Objekt in die Datenbank eingefügt wird und nur die Aktualisierung lastupdate , wenn es hat geändert.

War es hilfreich?

Lösung

ich es selbst jetzt herausgefunden.

Sie benötigen ein 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);
        }
    }
}

und dann registrieren Sie es in dir PersistenceManager ...

PersistenceManager pm = pmf.getPersistenceManager();
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null);

Ich fand die Lösung in der Datanucleus Access-plaftorm Handbuch die ich habe erst jetzt erkannt. Das Online-Handbuch scheint ein wenig komplex zu mir.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top