Hibernate在几分钟后失去与数据库的连接,并发送以下错误:
org.hibernate.engine.jdbc.spi.SqlExceptionHelper
logExceptions警告:
SQL错误: 0,SQLState: 08S01 paź18,2018 11:17:40 PM
org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions错误:
从服务器成功接收的最后一个数据包是在363到452毫秒之前。最后一个成功发送到服务器的数据包是在363到493毫秒之前。长于服务器配置的'interactive_timeout‘值。在应用程序中使用之前,应考虑使连接过期和/或测试连接有效性,增加客户端超时的服务器配置值,或使用连接器/J连接属性'autoReconnect=true‘来避免此问题。
我添加了autoreconnect=true,但它不工作,错误仍然发生。
然后我创建了DatabaseConnectionController,它具有以下功能:
public static EntityManagerFactory getEntityManagerFactory() {
if (entityManagerFactory != null && entityManagerFactory.isOpen()) {
return entityManagerFactory;
} else {
return requestNewConnection();
}
}
问题仍然存在,我开始在谷歌中搜索答案,我在persistance.xml中添加了以下几行:
<property name="hibernate.dbcp.validationQuery" value="SELECT 1" />
<property name="hibernate.dbcp.testOnBorrow" value="true" />
<property name="hibernate.dbcp.validationInterval" value="60000" />
<property name="hibernate.dbcp.testOnReturn" value="true" />
它也没有解决我的问题。
Hibernate不会在第一次发送错误消息时自动重新连接到数据库,但是当发送错误消息时,第二次查询会自动重新连接到数据库。
如何将其设置为在断开连接后自动重新连接,或者如何捕获此错误并在代码中重复查询?
https://stackoverflow.com/questions/52883010
复制相似问题