使用OracleDataSource时DBUnit/Spring事务未回滚
我正在尝试使用DBUnit将空间数据插入到Oracle数据库中,然后将其回滚。为了插入空间数据,我必须使用Oracle10DataTypeFactory,它为空间数据类型引入了其他DBUnit Oracle扩展。在内部,他们将对OraclePreparedStatement进行转换。为了获得OraclePreparedStatement,我使用OracleDataSource。因此,当我使用以下Spring配置时:使用OracleDataSource时DBUnit/Spring事务未回滚,spring,oracle11g,dbunit,Spring,Oracle11g,Dbunit,我正在尝试使用DBUnit将空间数据插入到Oracle数据库中,然后将其回滚。为了插入空间数据,我必须使用Oracle10DataTypeFactory,它为空间数据类型引入了其他DBUnit Oracle扩展。在内部,他们将对OraclePreparedStatement进行转换。为了获得OraclePreparedStatement,我使用OracleDataSource。因此,当我使用以下Spring配置时: <bean id="testDataSource" class="orac
<bean id="testDataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="URL" value="${database.url}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
<property name="implicitCachingEnabled" value="false" />
<property name="explicitCachingEnabled" value="false" />
<property name="connectionCachingEnabled" value="false" />
</bean>
<bean id="testDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${user}/>
<property name="password" value="${password}"/>
</bean>
但即便如此,这似乎也被忽视了。有人遇到过类似的情况吗?只有在事务启动时,Spring角色恢复才能正常工作
因此,请确保您的测试使用Spring Runner(例如,通过使用
@RunWith(SpringJUnit4ClassRunner.class)
注释测试),并且使用@Transactional
注释的测试只有在事务启动时才能正常工作
因此,请确保您的测试使用Spring Runner(例如,通过使用@RunWith(SpringJUnit4ClassRunner.class)
注释测试),并使用@Transactional
注释测试
connection = DataSourceUtils.getConnection(dataSource);
connection.setAutoCommit(false);