考虑使用具有以下持久性结构的 DataNucleus 的应用程序:
你有一个类,它有两个属性,比如created (Date) 和lastUpdate (Date): 当要提交这个类的对象时,你如何自动用适当的值填充这些属性?适当的值将在将对象插入数据库时将created和lastUpdate都设置为当前时间,并在它发生更改时仅更新lastUpdate 。
考虑使用具有以下持久性结构的 DataNucleus 的应用程序:
你有一个类,它有两个属性,比如created (Date) 和lastUpdate (Date): 当要提交这个类的对象时,你如何自动用适当的值填充这些属性?适当的值将在将对象插入数据库时将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 Plattorm 手册中找到了解决方案,直到现在我才知道。在线手册对我来说似乎有点复杂。