Исключение в Hibernate «Не удается освободить соединение»? - PullRequest
3 голосов
/ 03 апреля 2012

Я использовал Spring DATA JPA в своем приложении, которое является оболочкой над спящим. При взаимодействии с базой данных в один момент я получаю ожидание

Caused by: org.hibernate.exception.GenericJDBCException: Cannot release connection
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:478)
    at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:429)
    at org.hibernate.jdbc.ConnectionManager.afterStatement(ConnectionManager.java:304)
    at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:572)
    at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:291)
    at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:307)
    at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:234)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1967)
    at org.hibernate.loader.Loader.doQuery(Loader.java:802)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2533)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:246)

обработка соединения в спящем режиме - это внутренняя обработка, которую мы явно не освобождаем и не закрываем.

Я не могу понять, как решить эту проблему ..

1 Ответ

2 голосов
/ 02 июня 2012

Наконец-то я получил решение.Я решил эту проблему, установив некоторые дополнительные настройки для базы данных.

Вот подробная ссылка: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

В двух словах («testOnBorrow», «testOnReturn», «testWhileIdle») этиэто параметры, с которыми я играл, чтобы удалить вышеприведенное исключение. Выше исключения показывают, что в какой-то момент времени наш объект соединения с базой данных каким-то образом становится недействительным. Но этот параметр помогает нам контролировать соединение с базой данных.

Cheers:)

...