无法检查JDBC自动提交模式

Bar*_*pan 5 jpa spring-data-jpa

我们正在使用spring数据jpa,在一个地方我们注入了实体管理器.
对于所有其他功能,我们使用jpa-repository但是对于一个功能,我们使用注入的实体管理器.这在应用程序启动后的一段时间内正常工作但开始给出以下错误.经过一段时间后,实体管理器似乎删除了数据库连接.无法复制这个.在实体管理器中是否有任何超时设置,之后它会丢弃数据库连接.

的PersistenceException:

org.hibernate.exception.GenericJDBCException: could not inspect JDBC autocommit mode javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not inspect JDBC autocommit mode   at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)     at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)     at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:458)
Run Code Online (Sandbox Code Playgroud)

Jen*_*der 5

实体管理器本身没有这样的东西。但是您的数据库可能会在一段时间后关闭连接,尤其是当它们处于空闲状态或执行大量工作时(数据库可以对连接或事务可能使用的 CPU 时间有一个配额)。

您的连接池是此类意外的另一个可能来源。

有趣的问题是:为什么它只发生在你直接使用的实体管理器上。一种可能的原因是您没有正确释放连接。这可能会使连接池认为它们过时并在一段时间后关闭它们。

为了调试这个,我将首先检查你的连接池配置并激活它的日志记录,这样你就可以看到连接返回时何时分发,以及池可能触发的任何其他特殊事件。

  • 是的,我们知道了。我们没有正确释放/关闭连接。谢谢。 (3认同)