Spring Data Neo4j - кросс-магазин персистентности
Я новичок в SDN, я пытаюсь сделать постоянство кросс-магазина с Hibernate. В учебнике, представленном на сайте, есть примеры того же самого, я также проверил github. У меня два вопроса
Я не могу выполнить настройку 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/>
Что происходит, когда вы ссылаетесь на 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"/>
Не нужно создавать собственную реализацию.
Шаблон, передаваемый в конфигурацию репозитория, является тем, который используется его инфраструктурой. В большинстве случаев нет необходимости настраивать что-то другое.