DataNucleus: Comment puis-je effectuer automatiquement des actions lors de la validation d'une transaction?

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

Question

Considérer avoir une application en utilisant DataNucleus avec la structure de persistance suivante:

Vous avez une classe qui a deux attributs comme créé (date) et lastUpdate (Date): Comment remplir automatiquement ces attributs avec les valeurs appropriées lorsqu'un objet de cette classe va être engagée? Les valeurs appropriées seraient paramétrez à la fois, créé et lastUpdate à l'heure actuelle, lorsqu'un objet est inséré dans la base de données et la mise à jour juste lastUpdate quand il a changé.

Était-ce utile?

La solution

Je pensais que ce moi-même maintenant.

Vous devez créer 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);
        }
    }
}

et puis l'enregistrer en vous PersistenceManager ...

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

J'ai trouvé la solution dans le DataNucleus Accès manuel Plaftorm qui Je ne l'ai reconnu jusqu'à présent. Le manuel en ligne semble un peu complexe pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top