2 Stimmen

DataNucleus: Wie führe ich automatisch Aktionen aus, wenn ich eine Transaktion festschreibe?

Stellen Sie sich eine Anwendung vor, die DataNucleus mit der folgenden Persistenzstruktur verwendet:

Sie haben eine Klasse, die zwei Attribute hat wie erstellt (Datum) und lastUpdate (Datum): Wie füllt man diese Attribute automatisch mit den entsprechenden Werten, wenn ein Objekt dieser Klasse übertragen werden soll? Geeignete Werte wären das Setzen von beidem, erstellt y lastUpdate zum aktuellen Zeitpunkt, wenn ein Objekt in die Datenbank eingefügt wird, und nur die Aktualisierung lastUpdate wenn sie sich geändert hat.

3voto

Markus Punkte 1742

Ich habe es jetzt selbst herausgefunden.

Sie müssen eine 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 registrieren Sie es dann in Ihrem PersistenceManager...

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

Ich habe die Lösung in der DataNucleus Access Plaftorm Handbuch was ich bis jetzt nicht erkannt habe. Das Online-Handbuch scheint mir ein wenig komplex zu sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X