Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jooq不使用spring事务_Java_Spring_Transactions_Spring Jdbc_Jooq - Fatal编程技术网

Java Jooq不使用spring事务

Java Jooq不使用spring事务,java,spring,transactions,spring-jdbc,jooq,Java,Spring,Transactions,Spring Jdbc,Jooq,我尝试在SpringJDBC中使用Jooq进行设置,除了事务之外,其他一切都正常工作 这是我当前的设置: @Configuration public class DALConfig { @Value("${jdbcUrl}") String jdbcUrl; @Value("${username}") String username; @Value("${password}") String password; @Bean(dest

我尝试在SpringJDBC中使用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());
    }
}
我在插入新课程的方法上使用@Transactionalpropagation=Propagation.MANDATORY注释,但我得到以下异常org.springframework.transaction.IllegalTransactionStateException:对于标记为传播“强制性”的事务,未找到任何现有事务。
我已经阅读了spring和jooq的文档,但是我还没有弄清楚缺少了什么以及如何解决这个问题。有人能指出我在这里遗漏了什么吗。

好的,我遇到了问题,应该回滚事务的异常发生在事务范围之外。如果我在包含异常的作用域中添加了@Transactional,则回滚工作正常。 此外,传播应为propagation.MANDATORY,应更改为默认的propagation.REQUIRED。

@Transactionalpropagation=propagation.MANDATORY意味着必须存在一个事务,否则它将不会创建一个事务。即使我使用propagation=propagation.REQUIRED,如果不存在,它将创建一个新事务,我没有看到任何回滚和事务不工作。在这种情况下,我没有任何例外。