例外:
从服务器成功收到的最后一个数据包是2,405,585 几毫秒之前。成功发送到服务器的最后一个数据包是 30,340毫秒之前。 javax.persistence.PersistenceException:org.hibernate.exception.JDBCConnectionException:无法解压缩 结果集 警告:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL错误:0,SQLState:null 错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 已经关闭。 在org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763) 在org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) 在org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:458) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.springframework.orm.jpa.SharedEntityManagerCreator $ DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:310) at com.sun.proxy。$ Proxy27.getResultList(Unknown Source) 在 com.health.dao.HospitalDaoImpl.findByPostcode(HospitalDaoImpl.java:32) 在com.health.service.HospitalServiceImpl.findHospitalByPostCode(HospitalServiceImpl.java:21) 在com.health.travel.HospitalController.search(HospitalController.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) 在org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 在org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:674) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(Thread.java:745) 引起:org.hibernate.exception.JDBCConnectionException:无法提取ResultSet 在org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) 在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:89) 在org.hibernate.loader.Loader.getResultSet(Loader.java:2065) 在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) 在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 在org.hibernate.loader.Loader.doQuery(Loader.java:909) 在org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在org.hibernate.loader.Loader.doList(Loader.java:2553) 在org.hibernate.loader.Loader.doList(Loader.java:2539) 在org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) 在org.hibernate.loader.Loader.list(Loader.java:2364) 在org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496) 在org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) 在org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:231) 在org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) 在org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) 在org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573) 在org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:449) ......还有46个 引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信链路故障
com.health.dao.HospitalDaoImpl.findHospitalByPostCode
/**
* Find hospital by post code
*/
@SuppressWarnings("unchecked")
@Transactional
@Override
public List<Hospital> findByPostcode(int postcode) {
try {
String str = "SELECT h FROM Hospital h WHERE h.postcode BETWEEN ?1 AND ?2";
Query query = em.createQuery(str);
query.setParameter(1, postcode - 2);
query.setParameter(2, postcode + 2);
return query.getResultList();
} catch (Exception e) {
// TODO Auto-generated catch block
em.close();
e.printStackTrace();
return null;
} finally {
em.close();
}
}
答案 0 :(得分:0)
您在方法中两次致电em.close()
,但您不需要其中任何一种。正如您使用@Transactional
注释的方法一样,Spring框架将负责将其作为声明性事务进行管理并打开 - 关闭连接(如果已正确配置它)。
另见: