Spring Boot - SDN 5 - Neo4j 审核@CreatedDate不起作用



我在获取其他审计功能@CreatedDate时遇到了一些问题。我相信我已经遵循了参考文档中提供的指导,但我相信可能缺少一些东西。我目前正在使用使用SDN 5.0.2的Spring Boot 2.0.0.M7。我正在尝试一个非常简单的示例,但无论我是否使用LongLocalDate,甚至Date当我在 Neo4j 浏览器中查看数据或尝试将保存的节点加载回 POJO 时,我都不会填充它。

这是我对象的片段:

@NodeEntity
public class Person {
@Id @GeneratedValue private Long id;
@CreatedBy
private String user;
@CreatedDate
public Long createdDate;
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}

我有一个非常简单的存储库,它只有一个findByName方法,主应用程序也没有做太多,但它看起来像这样:

@SpringBootApplication
@EnableNeo4jRepositories
public class Application {
private final static Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
@Bean
CommandLineRunner demo(PersonRepository personRepository) {
return args -> {
personRepository.deleteAll();
Person bob = new Person("Bob");
personRepository.save(bob);
Person bob2 = personRepository.findByName(bob.getName());
log.info("Name: " + bob2.getName() + " Created Date: " + bob2.createdDate);
};
}
}

日志的输出显示createdDate仍然null

Name: Bob  Created Date = : null 

我什至创建了一个实现AuditorAware的类,但应用程序从未触发该代码。我想我缺少一些注释并尝试了@EnableNeo4jAuditing,但这会导致The dependencies of some of the beans in the application context form a cycle:

我似乎找不到我错过的东西。我在SDN 4中看到有些人已经设置了一个应用程序侦听器,但那是在审核支持之前。我觉得我已经完成了我的研究,但我碰壁了。

您是对的:启用审核功能需要注释@EnableNeo4jAuditing。但这会导致目前的错误。

当应用SpringBoot Neo4j自动配置时,它将创建一个SessionFactory并要求在SessionFactory中注册所有EventListener之前先实例化它们。 另一方面,Neo4jAuditingEventListener要求SessionFactory在其中注册自己。结果是启动应用程序时出现循环依赖关系错误。

这显然是SpringData Neo4j 5.0(版本5.0.3)中的一个错误。它将在下一个SpringData Neo4j版本5.1.0 M1以及SpringData Neo4j 5.0(SR 4)的下一个服务版本中修复。

如评论中所述,这是跟踪此问题的问题链接。

相关内容

  • 没有找到相关文章

最新更新