neo4j + mysql在spring数据事务中无法正常工作

时间:2014-02-25 21:30:05

标签: mysql neo4j spring-data-jpa spring-transactions spring-data-neo4j

我正在尝试使用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>

0 个答案:

没有答案