java - Jooq 不使用春季交易
问题描述
我尝试使用带有 Spring JDBC 的 Jooq 进行设置,除事务外一切正常。
这是我目前的设置:
@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'
。我已经阅读了 spring 和 jooq 的文档,但我无法弄清楚缺少什么以及如何解决这个问题。有人可以指出我在这里缺少什么。
解决方案
好的,我遇到了问题,应该回滚事务的异常发生在事务范围之外。如果我@Transactional
在包含异常的范围内添加,则回滚工作正常。
此外,propagation
应该将Propagation.MANDATORY
其更改为Propagation.REQUIRED
(这是默认设置)。
推荐阅读
- r - R 不为 plot() 函数分配颜色
- c++ - 用户输入出现的数字
- go - golang linux在exec的帮助下添加用户
- java - 可导航地图:BigDecimal 或 NextKey 上的 lowerKey() 方法?
- argoproj - 如何根据消息值触发不同的模板?
- r - rvest 包的 read_html 问题
- xcode - 全新 XCode 安装显示已撤销的证书
- amazon-web-services - Amazon S3 aws:删除超过 5 天的文件夹
- javascript - 如何将 Vue 3 组件挂载到父组件?
- python-3.x - 即使我安装了 ffmpeg,Heroku 也不播放音乐