Я попытался настроить использование Jooq с Spring JDBC, все работает правильно, кроме транзакций.
Это мои текущие настройки:
@Configuration
public class DALConfig {
@Value("${jdbcUrl}")
String jdbcUrl;
@Value("${username}")
String username;
@Value("${password}")
String password;
@Bean(destroyMethod = "close")
DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean(name="transactionManager")
DataSourceTransactionManager getDataSourceTransactionManager() {
return new DataSourceTransactionManager(getDataSource());
}
@Bean(name="transactionAwareDataSource")
TransactionAwareDataSourceProxy getTransactionAwareDataSourceProxy() {
return new TransactionAwareDataSourceProxy(getDataSource());
}
@Bean(name="connectionProvider")
DataSourceConnectionProvider getDataSourceConnectionProvider() {
return new DataSourceConnectionProvider(getTransactionAwareDataSourceProxy());
}
@Bean
DefaultDSLContext getDefaultDSLContext() {
return new DefaultDSLContext(getConfiguration());
}
@Bean
DefaultConfiguration getConfiguration() {
DefaultConfiguration config = new DefaultConfiguration();
config.set(SQLDialect.MYSQL);
config.setConnectionProvider(getDataSourceConnectionProvider());
return config;
}
@Bean
CourseDao getCourseDao() {
return new CourseDao(getConfiguration());
}
}
Я использую @Transactional(propagation = Propagation.MANDATORY)
аннотацию для метода, который вставляет новый курс, но я получаю следующее исключение org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'
.
Я прочитал документы для весны и jooq, но я не смог выяснить, чего не хватает и что нужно сделать, чтобы решить эту проблему. Может кто-нибудь указать, что я здесь упускаю.