В моей весне данные Neo4j 4 project - BeforeSaveEvent
класс устарел.Весенние данные Neo4 - BeforeSaveEvent устарел
Кроме того, ранее я использовал следующий код для того, чтобы настройки созданы/обновлены даты для моих субъектов:
@EventListener
public void handleBeforeSaveEvent(BeforeSaveEvent event) {
Object entity = event.getEntity();
if (entity instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) entity;
if (baseEntity.getCreateDate() == null) {
baseEntity.setCreateDate(new Date());
} else {
baseEntity.setUpdateDate(new Date());
}
}
}
но сейчас этот слушатель не вызывается.
Есть ли замена для этой логики в Neo4j 4? Я по-настоящему ценю пример. Благодаря
ОБНОВЛЕНЫ
Конфигурация, описанная ниже, работает, но некоторые из моих тестов не из-за NULL датами ранее сохраненных лица .. что-то еще не так ..
После уточнения найден причина этого вопроса и ждал этого BugfixModifications during a onPreSave() event do not persist to the database
@Configuration
@EnableExperimentalNeo4jRepositories(basePackages = "com.example")
@EnableTransactionManagement
public class Neo4jTestConfig {
@Bean
public Neo4jTransactionManager transactionManager() throws Exception {
return new Neo4jTransactionManager(sessionFactory());
}
@Bean
public SessionFactory sessionFactory() {
return new SessionFactory("com.example") {
@Override
public Session openSession() {
Session session = super.openSession();
session.register(new EventListenerAdapter() {
@Override
public void onPreSave(Event event) {
Object eventObject = event.getObject();
if(eventObject instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) eventObject;
if (baseEntity.getCreateDate() == null) {
baseEntity.setCreateDate(new Date());
} else {
baseEntity.setUpdateDate(new Date());
}
}
}
});
return session;
}
};
}
}
Облицовка с той же проблемой ... Я нашел [этот вопрос] (http://stackoverflow.com/questions/30604863/spring-data-neo4j-4-0-0-beforesaveevent-not-firing) здесь, на SO, и это то, что мы сделали на данный момент (всегда обновляем объекты графа через Neo4jTemplate вместо GraphRepository). Если вы используете шаблон, событие перед сохранением будет запущено. Я знаю, что это не идеальное решение, но, возможно, может помочь вам, пока вы не найдете лучший выбор. – troig
@troig, спасибо! Я использую сочетание Session с SDN Repositories .. так выглядит, что это не вариант, особенно в случае репозитория. – alexanoid
Да, я знаю, что это не очень хороший вариант ... В [sdn jira есть открытая проблема ] (https://jira.spring.io/browse/DATAGRAPH-710), возможно, вы могли бы посмотреть там и получить некоторую скидку. – troig