我正在尝试将 Spring 事务管理与 JDBI 3 集成。当我实现以下解决方案时,自动提交属性设置为 false,由于在提交或回滚事务之前关闭句柄,我得到以下异常*。另一方面,如果自动提交属性设置为 true,则没有任何事务错误,但这次回滚不起作用(在运行时异常之后),因此 X 对象被持久化到数据库。我使用 spring 2.0.3, JDBI 3.0.0-beta2 。是否有任何推荐/适用的解决方案?下面是配置类:@Beanpublic HikariDataSource hikariDataSource() { HikariConfig dataSourceConfig = new HikariConfig(); dataSourceConfig.setDriverClassName(driverClassName); dataSourceConfig.setJdbcUrl(jdbcUrl); dataSourceConfig.setUsername(username); dataSourceConfig.setPassword(password); dataSourceConfig.setAutoCommit(true); return new HikariDataSource(dataSourceConfig);}@Beanpublic TransactionAwareDataSourceProxy transactionAwareDataSourceProxy(HikariDataSource dataSource) { return new TransactionAwareDataSourceProxy(dataSource);}@Beanpublic PlatformTransactionManager platformTransactionManager(HikariDataSource dataSource) { return new DataSourceTransactionManager(dataSource);}@Beanpublic Jdbi jdbi(TransactionAwareDataSourceProxy transactionAwareDataSourceProxy) { Jdbi jdbi = Jdbi.create(transactionAwareDataSourceProxy); jdbi.installPlugin(new SqlObjectPlugin()); return jdbi;}这里是服务层@Override@Transactionalpublic Long createX(X x) { Long aLong = xDao.insertX(x); if(true) throw new RuntimeException(); return aLong;}*检测到不正确的事务处理:已关闭具有打开事务的句柄。在关闭句柄之前,必须明确提交或回滚事务。Jdbi 已自动回滚此事务。
添加回答
举报
0/150
提交
取消