考虑使用具有以下持久性结构的DataNucleus的应用程序:
您的类有两个属性,如 created (Date)和 lastUpdate (Date):当一个对象时,如何使用适当的值自动填充这些属性这个班级将被承诺? 适当的值是将 created 和 lastUpdate 设置为当对象插入数据库时的当前时间,并且当它具有 lastUpdate 时更新改变。
答案 0 :(得分:3)
我现在想出来了。
您需要创建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找到了解决方案,直到现在我还没有认识到。在线手册对我来说似乎有点复杂。