为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Spring 事务管理与 JDBI 3 集成?

如何将 Spring 事务管理与 JDBI 3 集成?

BIG阳 2021-06-02 18:57:27
我正在尝试将 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 已自动回滚此事务。
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

问题解决了。我使用的是旧版本的 JDBI,更新了它(检查这个线程),一切都解决了。


查看完整回答
反对 回复 2021-06-17
  • 1 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信