考虑使用具有以下持久结构的 DataNucleus 应用程序:
您有一个具有两个属性的类,例如created(日期)和lastUpdate(日期):当对象创建时,如何自动使用适当的值填充这些属性这个类的将要犯? 适当的值应将created和lastUpdate设置为对象插入数据库时的当前时间,并在对象插入时更新lastUpdate改变了。
最佳答案
现在我自己弄清楚了。
您需要创建一个 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);
}
}
}
然后在你的 PersistenceManager 中注册它...
PersistenceManager pm = pmf.getPersistenceManager();
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null);
我在 DataNucleus Access Plaftorm manual 中找到了解决方案直到现在我才认识到这一点。在线手册对我来说似乎有点复杂。
关于java - DataNucleus:提交事务时如何自动执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/763792/