Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 Spring DataSourceTransactionManager未提交_Java_Database_Spring_Transactions_Transactionmanager - Fatal编程技术网

Java Spring DataSourceTransactionManager未提交

Java Spring DataSourceTransactionManager未提交,java,database,spring,transactions,transactionmanager,Java,Database,Spring,Transactions,Transactionmanager,我想我的交易经理根本不工作。插入数据库时,自动增量值会增加,但不会添加新数据。 我以编程方式定义事务管理器、jdbc模板和数据源。 事务管理器: @Bean("txManager") public DataSourceTransactionManager dataSourceTransactionManager( BasicDataSource basicDataSource) { return new DataSourceTransactionManager(basic

我想我的交易经理根本不工作。插入数据库时,自动增量值会增加,但不会添加新数据。 我以编程方式定义事务管理器、jdbc模板和数据源。 事务管理器:

@Bean("txManager")
public DataSourceTransactionManager dataSourceTransactionManager(
        BasicDataSource basicDataSource) {
    return new DataSourceTransactionManager(basicDataSource);;
}
JDBC模板:

@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(
        BasicDataSource basicDataSource) {
    return new NamedParameterJdbcTemplate(basicDataSource);
}
数据源:

@Bean
public BasicDataSource basicDataSource() {
    BasicDataSource dataSource = new BasicDataSource();
    // ...
    dataSource.setDefaultAutoCommit(false);
    // ...
    return dataSource;
}
服务:

@Override
@Transactional("txManager")
public User register(RegistrationForm registrationForm) {
    User userToRegister = UserMapper.registrationFormToUser().apply(registrationForm);
    encryptPassword(userToRegister);
    return userDao.insert(userToRegister);
}
以下是调试日志:

[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] DataSourceUtils - Fetching JDBC Connection from DataSource
[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] DataSourceUtils - Returning JDBC Connection to DataSource
[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] JdbcTemplate - Executing SQL update and returning generated keys
[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] JdbcTemplate - Executing prepared SQL statement [INSERT INTO "user" (first_name, last_name, email, password, role_id) VALUES (?, ?, ?, ?, ?)]
[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] DataSourceUtils - Fetching JDBC Connection from DataSource
[DEBUG] [2018-12-07 10:37:35] [http-nio-8080-exec-10] DataSourceUtils - Returning JDBC Connection to DataSource

我做错了什么?

似乎您的Spring配置类缺少@EnableTransactionManagement

只是一种预感,但您是否已尝试将
数据源。setDefaultAutoCommit
设置为
true
?或者在插入后执行手动提交。它使用defaultAutoCommit true进行提交,但如果发生异常,则不会执行回滚操作。您是否在Spring配置中启用了事务管理?我应该在何处启用它(以编程方式)?