我正在尝试使用MySQL和neo4j构建一个应用程序。
目前我成功地在两个数据库中保存了一个实体,但是当我尝试创建回滚时,只有MySQL更改被回滚。
我不确定交易的mode =“proxy”配置是否可以用于neo4j,有人可以批准/拒绝吗?
我在相关方法上使用@Transactional注释,并通过抛出RuntimeException来启动回滚,正如我所提到的那样导致MySQL的回滚。
我的配置:
<neo4j: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>
<context:annotation-config/>
<context:component-scan base-package="...">
<neo4j:repositories base-package="..."/>
<jpa:repositories base-package="..."
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager"/>
<tx:annotation-driven mode="proxy" transaction-manager="transactionManager"/>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="hibernatePersistenceUnit"/>
<property name="packagesToScan" value="..."/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"/>
<property name="generateDdl" value="true"/>
<property name="database" value="MYSQL"/>
</bean>
</property>
</bean>
<!-- Database -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/..."/>
<property name="lookupOnStartup" value="true"/>
<property name="proxyInterface" value="javax.sql.DataSource"/>
</bean>
<!-- Declare a transaction manager-->
<bean id="transactionManager" class="org.springframework.data.transaction.ChainedTransactionManager">
<constructor-arg>
<list>
<ref bean="transactionManagerMysql"/>
<ref bean="transactionManagerNeo4j"/>
</list>
</constructor-arg>
</bean>
<bean id="transactionManagerMysql" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="transactionManagerNeo4j" class="org.springframework.data.neo4j.config.JtaTransactionManagerFactoryBean">
<constructor-arg ref="graphDatabaseService" />
</bean>