DataNucleus:如何在提交事务时自动执行操作?

时间:2009-04-18 17:17:50

标签: java persistence jdo datanucleus

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

您的类有两个属性,如 created (Date)和 lastUpdate (Date):当一个对象时,如何使用适当的值自动填充这些属性这个班级将被承诺? 适当的值是将 created lastUpdate 设置为当对象插入数据库时​​的当前时间,并且当它具有 lastUpdate 时更新改变。

1 个答案:

答案 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找到了解决方案,直到现在我还没有认识到。在线手册对我来说似乎有点复杂。