[英]Jooq not working with spring transactions
我尝试通过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
(默认设置)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.