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).
Как уже упоминалось в комментариях, вот ссылка на проблему, чтобы отслеживать это.