Spring Data Neo4 - BeforeSaveEvent deprecated



在我的Spring Data Neo4j 4项目中,不推荐使用BeforeSaveEvent类。

此外,之前我使用了以下代码来设置我的实体的创建/更新日期:

@EventListener
public void handleBeforeSaveEvent(BeforeSaveEvent event) {
    Object entity = event.getEntity();
    if (entity instanceof BaseEntity) {
        BaseEntity baseEntity = (BaseEntity) entity;
        if (baseEntity.getCreateDate() == null) {
            baseEntity.setCreateDate(new Date());
        } else {
            baseEntity.setUpdateDate(new Date());
        }
    }
}

但是现在这个监听器没有被调用。

在Neo4j4中,这个逻辑有替代品吗?举个例子我会非常感激的。感谢

更新

下面描述的配置正在运行,但由于以前保存的实体上的日期为NULL,我的一些测试失败了。。还是出了点问题。。

澄清发现此问题的原因并等待此错误修复后onPreSave()事件期间的修改不会持续到数据库

@Configuration
@EnableExperimentalNeo4jRepositories(basePackages = "com.example")
@EnableTransactionManagement
public class Neo4jTestConfig {
    @Bean
    public Neo4jTransactionManager transactionManager() throws Exception {
        return new Neo4jTransactionManager(sessionFactory());
    }
    @Bean
    public SessionFactory sessionFactory() {
        return new SessionFactory("com.example") {
            @Override
            public Session openSession() {
                Session session = super.openSession();
                session.register(new EventListenerAdapter() {
                    @Override
                    public void onPreSave(Event event) {
                        Object eventObject = event.getObject();
                        if(eventObject instanceof BaseEntity) {
                            BaseEntity baseEntity = (BaseEntity) eventObject;
                            if (baseEntity.getCreateDate() == null) {
                                baseEntity.setCreateDate(new Date());
                            } else {
                                baseEntity.setUpdateDate(new Date());
                            }
                        }
                    }
                });
                return session;
            }
        };
    }
}

您必须使用Spring Data Neo4j(SDN)4.2.0.M1。这还没有正式发布,但在Spring数据发布过程中,您可以自由测试它。

SDN中的事件代码已被弃用,取而代之的是各种机制。第一,SpringData现在支持事务感知事件侦听器。您可以在这里查看如何实现这些功能。第二,您现在可以将Neo4j OGM会话自动连接到您的应用程序中,并利用它的事件功能(请参阅register()方法)。

最后,您可以将这两个概念结合在一起,并通过Spring启动OGM生成的事件!

文档将在我们继续发布时提供,但现在可以自己玩了。

相关内容

  • 没有找到相关文章

最新更新