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