DataNucleus: Comment puis-je effectuer automatiquement des actions lors de la validation d'une transaction?
-
11-09-2019 - |
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é.
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.