2015-06-02 3 views
3

Я пытаюсь захватить BeforeSaveEvent при настройке Neo4J весной, так что я могу вызвать метод beforeSave() в классе, который сохраняется. К сожалению, похоже, что он не регистрируется в качестве слушателя, так как выполняется не выполнение моих заявлений печати.Весенние данные Neo4J 4.0.0: BeforeSaveEvent не срабатывает?

Идеи оценены.

@Configuration 
@EnableNeo4jRepositories(basePackages = "com.noxgroup.nitro") 
@EnableTransactionManagement 
public class NitroNeo4jConfiguration extends Neo4jConfiguration { 

    @Bean 
    public Neo4jServer neo4jServer() { 
     System.setProperty("username", "neo4j"); 
     System.setProperty("password", "*************"); 
     return new RemoteServer("http://localhost:7474"); 
    } 

    @Bean 
    public SessionFactory getSessionFactory() { 
     return new SessionFactory("com.noxgroup.nitro.domain"); 
    } 

    @Bean 
    ApplicationListener<BeforeSaveEvent> beforeSaveEventApplicationListener() { 
     return new ApplicationListener<BeforeSaveEvent>() { 
      @Override 
      public void onApplicationEvent(BeforeSaveEvent event) { 
       System.out.println("Listening to event"); 
       Object entity = event.getEntity(); 
       if (entity instanceof NitroNode) { 
        ((NitroNode)entity).beforeSave(); 
       } else { 
        System.out.println("Not picking it up"); 
       } 
      } 
     }; 
    } 

} 

ответ

2

Этих события обстреляны Neo4jTemplate (см http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#_data_manipulation_events_formerly_lifecycle_events), так это то, что вы должны будете использовать для запуска сохранения.

В конфигурации NitroNeo4jConfiguration включают

@Bean 
public Neo4jOperations getNeo4jTemplate() throws Exception { 
    return new Neo4jTemplate(getSession()); 
} 

и в приложении,

@Autowired 
private Neo4jOperations neo4jTemplate; 

, который затем используется для сохранения

neo4jTemplate.save(person); 
+0

он работает отлично, но если я создал репозиторий интерфейс и вызвать метод сохранения в репозитории, тогда событие не будет срабатывать, как я бы хотел ожидать. – nils

+0

Вопрос Jira был подан для этого: https://jira.spring.io/browse/DATAGRAPH-710. – tstorms

+1

Прошло много времени на эту проблему ... какие-либо новости об изменении экономии срабатывания за счет репозиториев? Или использовать шаблон, чтобы продолжить? благодаря – troig

Смежные вопросы