Java Spring JPA具有两个实体管理器的单事务管理器
我使用的是SpringJPA,xml配置如下Java Spring JPA具有两个实体管理器的单事务管理器,java,spring,jpa,transactions,entitymanager,Java,Spring,Jpa,Transactions,Entitymanager,我使用的是SpringJPA,xml配置如下 <!-- additional datasource end --> <tx:annotation-driven transaction-manager="transactionManager"/> <bean id="transactionManager1" class="org.springframework.orm.jpa.JpaTransactionManager" p:entityManagerFac
<!-- additional datasource end -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager1" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory1" />
<bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory2" />
<bean
id="org.springframework.context.annotation.internalPersistenceAnnotationProcessor"
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
<property name="defaultPersistenceUnitName" value="entityManagerFactory1" />
</bean>
<bean id="entityManagerFactory1" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource" p:persistenceUnitName="primary">
<property name="jpaPropertyMap">
<map>
<!-- Map values-->
</map>
</property>
</bean>
<bean id="entityManagerFactory2" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource" p:persistenceUnitName="primary">
<property name="jpaPropertyMap">
<map>
<!-- Map values-->
</map>
</property>
</bean>
其中,primary和secondary是在persistence.xml
文件中指定的数据源
我使用的方法是在数据库1中插入数据,然后在数据库2中更新数据。对于插入我使用的是em1和更新使用的是em2。我用同样的方法一行接一行地做
line-1 > totalUpdation = em1.createNativeQuery(INSERTION_QUERY).executeUpdate();
line-2 > totalUpdation = em2.createNativeQuery(UPDATION_QUERY).executeUpdate();
插入工作正常,但当使用em2执行第2行时,它会给出TransactionRequiredException:For update/delete query
有谁能建议如何将单个TransactionManager与两个实体经理一起使用??这是什么
p:qualifier value=“”
?@AlanHay:对不起,我忽略了一个输入错误,我编辑了问题这是什么p:qualifier value=“/code>?@AlanHay:对不起,我忽略了一个输入错误,我编辑了问题
line-1 > totalUpdation = em1.createNativeQuery(INSERTION_QUERY).executeUpdate();
line-2 > totalUpdation = em2.createNativeQuery(UPDATION_QUERY).executeUpdate();