[英]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.