0

我正在使用 TransactionInterceptor 打开事务,并使用 HibernateTransactionManager 和 com.zaxxer.hikari.HikariDataSource 作为数据源。

我为数据源和休眠属性 hibernate.connection.provider_disables_autocommit 值设置了自动提交值,如下所示

<property name="autoCommit" value="false"/>

<prop key="hibernate.connection.provider_disables_autocommit">true</prop>

即使这样,交易在需要之前就已经打开了。

5.3.1.最终版本的hibernate-core用于上述。

我使用了以下参考资料。

https://github.com/spring-projects/spring-boot/issues/9261

https://vladmihalcea.com/why-you-should-always-use-hibernate-connection-provider_disables_autocommit-for-resource-local-jpa-transactions/

如果需要做任何其他事情或延迟的确切含义,请告诉我。

提前致谢。

4

1 回答 1

1

除了像您在休眠中将自动提交配置为 false 之外,您还需要在连接池级别设置 autocommit false。否则它不会像你的情况那样有效。比如说,对于 hikari 池,您需要进行如下配置:

HikariConfig hikariConfig = super.hikariConfig(dataSource);

hikariConfig.setAutoCommit(假);

于 2020-04-14T18:40:30.037 回答