Добрый день!
Моя проблема заключается в том, что когда я перенес конфигурацию для другой БД из XML в @Bean, мои транзакции теряются .... не выполняется откат и не работает.
Я вижу это, когда в БД после первой вставки создается строка (!), Но в этом методе (транзакции) запускается вторая вставка, я беру исключение и строку после первой вставки остается в БД!
Это xml
<bean name="sqlSessionFactoryYarus" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="/WEB-INF/MapperConfigYarus.xml" />
<property name="dataSource" ref="dataSourceYarus" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="ru.project.crm.mapper_yarus"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryYarus" />
</bean>
<bean id="transactionManagerYarus" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceYarus" />
<qualifier value="yarus"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManagerYarus" />
этот код (dataSource нет этого, чтобы не терять места)
@Component
@Scope("singleton")
@DependsOn("springApplicationContextHolder")
public class YarusConnectionConfig {
@Bean
public SqlSessionFactory sqlSessionFactoryYarus() throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSourceYarus());
sqlSessionFactory.setConfigLocation(new ClassPathResource("../MapperConfigYarus.xml"));
return sqlSessionFactory.getObject();
}
@Bean
public MapperScannerConfigurer yarusMapper() throws Exception {
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setSqlSessionFactoryBeanName("sqlSessionFactoryYarus");
msc.setBasePackage("ru.project.crm.mapper_yarus");
return msc;
}
@Bean
public DataSourceTransactionManager transactionManagerYarus() throws Exception {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSourceYarus());
return dataSourceTransactionManager;
}
}
А
Все шаги, когда я хочу, чтобы Транзакционная аннотация @Transactional (value = "TransactionsManagerYarus")
И если я строю проект с XML Transactional работает нормально
НО, если сборка с @Bean не работает ...
Plesae Помоги мне!
Я использую
1) Пружина 4.3
2) MyBatis
3) Postgesql
4) Java 8