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

标签 java persistence jdo datanucleus

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

您有一个具有两个属性的类,例如created(日期)和lastUpdate(日期):当对象创建时,如何自动使用适当的值填充这些属性这个类的将要犯? 适当的值应将createdlastUpdate设置为对象插入数据库时​​的当前时间,并在对象插入时更新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/

相关文章:

java - 如何让 ScrollView 滚动到底部?

java - 从现有数据库生成 JPA 2 实体

java - JPA/Hibernate 批量(批量)插入

java - 设置数据库目录

jdoconfig.xml 中的 MongoDb ConnectionURL

java - 当模块设置为手动缩放时,Appengine 开发服务器上的 Guice 过滤器返回 404

java - 实现相同接口(interface)的接口(interface)内的内部类,我们通过这个实现什么?

google-app-engine - 使用 Google App Engine 和 JDO 进行全文搜索?

java - 如何设置图片表情始终存储正确的图片路径