我正在嘗試將 Spring 事務(wù)管理與 JDBI 3 集成。當(dāng)我實(shí)現(xiàn)以下解決方案時(shí),自動(dòng)提交屬性設(shè)置為 false,由于在提交或回滾事務(wù)之前關(guān)閉句柄,我得到以下異常*。另一方面,如果自動(dòng)提交屬性設(shè)置為 true,則沒有任何事務(wù)錯(cuò)誤,但這次回滾不起作用(在運(yùn)行時(shí)異常之后),因此 X 對象被持久化到數(shù)據(jù)庫。我使用 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;}這里是服務(wù)層@Override@Transactionalpublic Long createX(X x) { Long aLong = xDao.insertX(x); if(true) throw new RuntimeException(); return aLong;}*檢測到不正確的事務(wù)處理:已關(guān)閉具有打開事務(wù)的句柄。在關(guān)閉句柄之前,必須明確提交或回滾事務(wù)。Jdbi 已自動(dòng)回滾此事務(wù)。
添加回答
舉報(bào)
0/150
提交
取消