In meinem Projekt Spring Data Neo4j 4 - BeforeSaveEvent
Klasse ist veraltet.Spring Data Neo4 - BeforeSaveEvent veraltet
Auch zuvor verwendete ich einen folgenden Code, um Setup erstellt/aktualisiert Termin für meine Entitäten:
@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());
}
}
}
aber jetzt diese Hörer nicht aufgerufen wird.
Gibt es einen Ersatz für diese Logik in Neo4j 4? Ich werde ein Beispiel wirklich schätzen. Dank
AKTUALISIERT
Die nachfolgend beschriebene Konfiguration funktioniert, aber einige meiner Tests werden fehlschlagen, weil der NULL Daten auf einem zuvor gespeicherten Entitäten .. noch etwas falsch ist ..
Nach Klärung gefunden Grund für dieses Problem und warten auf dieser 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;
}
};
}
}
Mit dem gleichen Problem konfrontiert ... Ich fand [diese Frage] (http://stackoverflow.com/questions/30604863/spring-data-neo4j-4-0-0-beforesaveevent-not-branding) hier auf SO und das haben wir im Moment gemacht (aktualisieren Sie Graph-Entities immer über Neo4jTemplate statt GraphRepository). Wenn Sie die Vorlage verwenden, wird das Ereignis vor dem Speichern ausgelöst. Ich weiß, dass es keine ideale Lösung ist, aber vielleicht kann es Ihnen helfen, bis Sie eine bessere Wahl getroffen haben. – troig
@troig, danke! Ich benutze eine Mischung aus Session mit SDN-Repositories .. so sieht das aus, als ob dies keine Option wäre. – alexanoid
Ja, ich weiß, es ist keine wirklich gute Option ... Es gibt ein offenes Problem in [sdn jira ] (https://jira.spring.io/browse/DATAGRAPH-710), vielleicht könntest du dort nachsehen und ein wenig Feedback bekommen. – troig