我在这里找到了解决方案:我应该为JBDC模板使用哪个事务管理器?
我使用的是JpaTransactionManager,而不是DataSourceTransactionManager。
JavaDoc http://static.springsource.org/spring/docs/3.0.x/javadoc-
api/org/springframework/orm/jpa/JpaTransactionManager.html
该事务管理器 还支持事务内的直接数据源访问(即,与同一数据源一起使用的纯JDBC代码)
。这允许混合访问JPA的服务和使用纯JDBC的服务(无需了解JPA)!应用程序代码需要遵循与DataSourceTransactionManager相同的简单连接查找模式(即DataSourceUtils.getConnection(javax.sql.DataSource)或通过TransactionAwareDataSourceProxy)。
请注意,这需要配置特定于供应商的JpaDialect。
在将jpaVendorAdapter添加到我的entityManagerFactory配置中之后,一切正常,JdbcTemplate查询和MyBatis都在预期的同一事务中运行。基于JavaDoc,我猜jpaDialect应该足够了,但是现在是4点,所以我现在就不尝试了:)
<bean id="entityManagerFactory"> <property name="persistenceUnitName" value="persistenceUnit"/> <property name="dataSource" ref="dataSource"/> <property name="jpaVendorAdapter"> <bean > <property name="showSql" value="true" /> <property name="generateDdl" value="true" /> <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> </bean> </property></bean>



