diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml index d5ab53de1..af9d925a3 100644 --- a/hutool-db/pom.xml +++ b/hutool-db/pom.xml @@ -25,7 +25,7 @@ 2.4.13 3.12.8 3.34.0 - 2.6.0 + 2.5.2 3.6.0 @@ -80,7 +80,7 @@ com.github.chris2018998 beecp - 3.2.1 + 3.1.2 slf4j-api diff --git a/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java b/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java index b3bfb11c4..06669a85d 100644 --- a/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java +++ b/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java @@ -2,11 +2,13 @@ package cn.hutool.db.ds.bee; import cn.beecp.BeeDataSource; import cn.beecp.BeeDataSourceConfig; +import cn.beecp.TransactionIsolationLevel; import cn.hutool.core.util.StrUtil; import cn.hutool.db.ds.AbstractDSFactory; import cn.hutool.setting.Setting; import javax.sql.DataSource; +import java.sql.Connection; /** * BeeCP数据源工厂类 @@ -42,6 +44,17 @@ public class BeeDSFactory extends AbstractDSFactory { } } + // since BeepCP 3.2.1 bug,Sqlite下默认Transaction Isolation不支持,在此判断修正 + if(StrUtil.containsIgnoreCase(jdbcUrl, "sqlite")){ + final int isolationCode = beeConfig.getDefaultTransactionIsolationCode(); + if(Connection.TRANSACTION_READ_UNCOMMITTED != isolationCode + && Connection.TRANSACTION_SERIALIZABLE != isolationCode){ + // SQLite只支持这两种事务 + beeConfig.setDefaultTransactionIsolation(TransactionIsolationLevel.LEVEL_READ_UNCOMMITTED); + beeConfig.setDefaultTransactionIsolationCode(Connection.TRANSACTION_READ_UNCOMMITTED); + } + } + return new BeeDataSource(beeConfig); } }