Spring Boot - SDN 5 - Аудит Neo4j @CreatedDate не работает

У меня есть некоторые проблемы с получением @CreatedDate среди других функций аудита от работы на всех. Я полагаю, что я следовал указаниям, приведенным в Справочном документе, но считаю, что чего-то не хватает. В настоящее время я использую Spring Boot 2.0.0.M7, который использует SDN 5.0.2. Я пытаюсь очень простой пример, но независимо от того, использую ли я Long, LocalDate, или даже 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 ответ

Вы были правы: аннотация @EnableNeo4jAuditing требуется для включения функции аудита. Но это приводит к ошибке на данный момент.

Когда автоконфигурация SpringBoot Neo4j будет применена, она создаст SessionFactory и требует всего EventListenerдолжны быть созданы до того, как зарегистрировать их всех в SessionFactory, С другой стороны Neo4jAuditingEventListener требует SessionFactory зарегистрироваться в нем. Результатом является ошибка циклической зависимости при запуске приложения.

Это явно было ошибкой в ​​SpringData Neo4j 5.0 (до версии 5.0.3). Это будет исправлено в следующей версии SpringData Neo4j 5.1.0 M1, а также в следующем сервисном выпуске для SpringData Neo4j 5.0 (SR 4).

Как уже упоминалось в комментариях, вот ссылка на проблему, чтобы отслеживать это.

Другие вопросы по тегам