Spring Data Neo4j - кросс-магазин персистентности

Я новичок в SDN, я пытаюсь сделать постоянство кросс-магазина с Hibernate. В учебнике, представленном на сайте, есть примеры того же самого, я также проверил github. У меня два вопроса

  1. Я не могу выполнить настройку XML, как упомянуто в документации или примерах. <neo4j:config/> не поддерживает entityManagerFactory, Я предполагаю, что он создает Neo4jConfiguration по умолчанию, который не имеет установщика для entityManagerFactory, Обходной путь, который я нашел, должен определить bean- компонент CrossStoreNeo4jConfiguration.

    @Bean
    public CrossStoreNeo4jConfiguration crossStoreNeo4jConfiguration(){
    CrossStoreNeo4jConfiguration configuration = new CrossStoreNeo4jConfiguration();
    configuration.setEntityManagerFactory(entityManagerFactory);
    configuration.setGraphDatabaseService(graphDatabaseService);
    return configuration;
    }
    

    Как это сделать внутри <neo4j:config/>

  2. Что происходит, когда вы ссылаетесь на Neo4jTemplate в свой репозиторий, используя neo4j-template-ref когда вы определяете репозитории, используя neo4j:repositories? какова цель?

UDPATE

Причина, по которой он не смог создать CrossStoreNeo4jConfiguration с <neo4j:config/> was Мне не хватало зависимости spring-data-neo4j-cross-store`. Но теперь я получаю исключение при запуске приложения.

Caused by: java.lang.IllegalStateException: Singleton 'nodeEntityStateFactory' isn't currently in creation
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.afterSingletonCreation(DefaultSingletonBeanRegistry.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:239)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:292)
at org.springframework.data.neo4j.cross_store.config.CrossStoreNeo4jConfiguration$$EnhancerByCGLIB$$779c5955.nodeEntityStateFactory(<generated>)
at org.springframework.data.neo4j.config.Neo4jConfiguration.mappingContext(Neo4jConfiguration.java:199)
at org.springframework.data.neo4j.cross_store.config.CrossStoreNeo4jConfiguration$$EnhancerByCGLIB$$779c5955.CGLIB$mappingContext$11(<generated>)
at org.springframework.data.neo4j.cross_store.config.CrossStoreNeo4jConfiguration$$EnhancerByCGLIB$$779c5955$$FastClassByCGLIB$$3134c8a8.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:280)
at org.springframework.data.neo4j.cross_store.config.CrossStoreNeo4jConfiguration$$EnhancerByCGLIB$$779c5955.mappingContext(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149)

Заранее спасибо.

1 ответ

Решение

Это должно работать:

<neo4j:config entityManagerFactory="entityManagerFactory"/>

Не нужно создавать собственную реализацию.

Шаблон, передаваемый в конфигурацию репозитория, является тем, который используется его инфраструктурой. В большинстве случаев нет необходимости настраивать что-то другое.

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