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

时间:2018-01-18 18:40:03

标签: spring-data-neo4j neo4j-ogm spring-data-neo4j-5

我遇到了一些问题,其中包括@CreatedDate其他审核功能。我相信我已遵循Reference Document中提供的指导,但我相信可能会遗漏某些内容。我目前使用的是使用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中看到有些人已经建立了一个应用程序监听器,但这是在审计支持之前。我觉得我已经完成了我的研究,但是我已经碰壁了。

1 个答案:

答案 0 :(得分:2)

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

当应用SpringBoot Neo4j自动配置时,它将创建一个 SessionFactory并要求所有EventListener实例化,然后在SessionFactory中注册所有Neo4jAuditingEventListener。 另一方面,SessionFactory要求return new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); 在其中注册。结果是启动应用程序时出现循环依赖性错误。

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

正如评论中所提到的,这是跟踪问题的链接。