【问题标题】:Spring Boot - SDN 5 - Neo4j Auditing @CreatedDate doesn't workSpring Boot - SDN 5 - Neo4j 审计 @CreatedDate 不起作用
【发布时间】:2018-01-18 18:40:03
【问题描述】:

我在获取 @CreatedDate 以及其他审计功能时遇到了一些问题。我相信我已经遵循了Reference Document 中提供的指导,但我相信可能缺少一些东西。我目前正在使用使用 SDN 5.0.2 的 Spring Boot 2.0.0.M7。我正在尝试一个非常简单的示例,但无论我使用Long、LocalDate 还是Date,当我在 Neo4j 浏览器中查看数据或尝试将保存的节点加载回POJO。

这是我的对象的 sn-p:

@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 中看到有人设置了应用程序侦听器,但那是在审计支持之前。我觉得我已经完成了我的研究,但我碰壁了。

【问题讨论】:

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


【解决方案1】:

你是对的:注释@EnableNeo4jAuditing 是启用审计功能所必需的。但这会导致目前出现错误。

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

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

正如 cmets 中所述,这里是问题的链接以跟踪此问题。

【讨论】:

  • 感谢您的更新。我希望一旦错误得到纠正,也可以在文档中进行一些澄清。目前尚不清楚需要哪些注释。我通过浏览 javadoc 偶然发现了它,然后试了一下。当它导致循环依赖时,这让我更加困惑。
  • 感谢您指出这一点。我们尽最大努力不断改进文档并告诉我们缺少的内容,这对我们从用户的角度发现不足有很大帮助。
  • 添加到文档中。
猜你喜欢
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 2015-01-20
  • 1970-01-01
相关资源
最近更新 更多