【问题标题】:Could not inspect JDBC autocommit mode无法检查 JDBC 自动提交模式
【发布时间】:2017-11-20 11:02:44
【问题描述】:

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

持久性异常:

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)

【问题讨论】:

    标签: jpa spring-data-jpa


    【解决方案1】:

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

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

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

    为了对此进行调试,我将首先检查您的连接池配置并为其激活日志记录,以便您查看连接返回时的分发时间以及池可能触发的任何其他特殊事件。

    【讨论】:

    • 非常感谢。我将调试连接池设置。让我们看看我得到了什么......再次感谢。
    • @Pandy 你有没有想过这个问题?看到同样的东西
    • 是的,我们想通了。我们没有正确释放/关闭连接。谢谢。
    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2016-07-01
    • 1970-01-01
    • 2013-03-09
    • 2012-03-10
    相关资源
    最近更新 更多