我们正在开发一个 maven-web 项目。在这个项目中使用了两个数据库,MySQL 和 Neo4j。项目在 MySQL 上运行良好(没有 Neo4j)。添加 Neo4j 配置文件(neo4j-config.xml)项目构建后没有任何错误,插入操作到 Mysql 成功返回,但实际上没有插入到表中。通过对这个问题的一些研究发现了关于“跨店操作”的信息:
带有跨存储的 XML 配置
<context:annotation-config/>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
</bean>
<datagraph:config graphDatabaseService="graphDatabaseService"
entityManagerFactory="entityManagerFactory"/>
<bean id="graphDatabaseService"
class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg index="0" value="http://localhost:7474/db/data" />
</bean>
我们的项目 db-context.xml
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="database" value="MYSQL" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="persistenceUnit" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
</bean>
我们的项目 neo4j-context.xml
<neo4j:config graphDatabaseService="graphDatabaseService" />
<bean id="graphDatabaseService"
class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg index="0" value="http://localhost:7474/db/data" />
</bean>
将 entityManagerFactory="entityManagerFactory" 添加到我们的 neo4j-config.xml 文件后,在运行 maven 项目时出现如下错误:
原因:org.springframework.beans.factory.BeanCreationException:创建名称为“org.springframework.data.neo4j.config.Neo4jConfiguration#0”的bean时出错:设置属性值时出错;嵌套异常是 org.springframework.beans.NotWritableProp ertyException:bean 类 [org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$5a2edf0] 的无效属性“entityManagerFactory”:Bean 属性“entityManagerFactory”不可写或具有无效的 setter 方法。setter 的参数类型是否与 getter 的返回类型匹配?
如果我们使用 datagraph 标签而不是 neo4j 标签,我会收到如下错误
违规资源:ServletContext资源[/WEB-INF/spring-servlet.xml];嵌套异常是 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:来自 ServletContext 资源 [/WEB-INF/neo4j-config.xml] 的 XML 文档中的第 32 行有效;嵌套异常是 org.xml.sax.SAXParseException;systemId: http ://www.springframework.org/schema/data/graph/datagraph-1.0.xsd ;行号:32;列号:51;src-resolve:无法将名称“存储库:存储库”解析为(n)“类型定义”组件。
我们的问题是,虽然在调试模式下插入操作行返回成功,但在将neo4j配置文件添加到我们的项目后,它并没有向表中添加新记录。我们不明白为什么只添加 neo4j-config.xml 文件会出现这种情况。第二个困惑是为什么添加“entityManagerFactory”不能解决这个问题。
除了 spring-data example (myrestaurants-social) 之外,我们在 maven-web 项目中找不到 Neo4j 与 MySQL 一起使用的任何示例。
提前感谢您所有宝贵的回复。