Hibernate/JTA 事务无法继续:STATUS_COMMITTED 尝试关闭连接时

Hibernate/JTA Transaction cannot proceed: STATUS_COMMITTED when trying to close connection

我启用了 Hibernate 日志以进行 DEBUG 并注意到它在释放连接方面遇到了问题 -

2018-10-09 16:33:26,217 TRACE [default task-14]-[org.hibernate.resource.jdbc.internal.ResourceRegistryStandardImpl] Releasing JDBC resources 2018-10-09 16:33:26,217 TRACE [default task-14]-[org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl] Closing logical connection 2018-10-09 16:33:26,217 DEBUG [default task-14]-[org.hibernate.engine.jdbc.spi.SqlExceptionHelper] could not clear warnings: java.sql.SQLException: IJ031070: Transaction cannot proceed: STATUS_COMMITTED

虽然它似乎不会导致任何应用程序错误,但我非常担心 Hibernate 可能无法正常释放其连接,因此可能导致连接泄漏。

本人运行在Wildfly 11上使用JTA休眠以供记录,会话工厂配置(通过Spring)如下 -

hibernate.jta.UserTransaction=UserTransaction
hibernate.cache.infinispan.cachemanager=java:jboss/infinispan/hibernate        
hibernate.transaction.coordinator_class=org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorBuilderImpl
hibernate.transaction.jta.platform=org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform
hibernate.cache.region.factory_class=org.hibernate.cache.infinispan.JndiInfinispanRegionFactory
hibernate.current_session_context_class=jta

在我看来,Hibernate 似乎不知道 JTA 事务正在关闭 - 是不是我可能错过了一些配置?

看起来 Hibernate 和 Spring 与事务同步不同步。在 LocalSessionFactoryBean 上设置 jtaTransactionManager 停止了这个错误。

旧 Spring 文档提及此问题 - https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch14s02.html(第 14.2.10 节使用 Hibernate 时出现虚假应用程序服务器警告)