2

考虑使用具有以下持久性结构的 DataNucleus 的应用程序:

你有一个类,它有两个属性,比如created (Date) 和lastUpdate (Date): 当要提交这个类的对象时,你如何自动用适当的值填充这些属性?适当的值将在将对象插入数据库时​​将createdlastUpdate都设置为当前时间,并在它发生更改时仅更新lastUpdate 。

4

1 回答 1

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 Plattorm 手册中找到了解决方案,直到现在我才知道。在线手册对我来说似乎有点复杂。

于 2009-04-18T18:26:48.747 回答