Что вызывает исключение SQL-запроса Hibernate? - PullRequest
0 голосов
/ 13 января 2011

Привет всем и заранее извините за этот пост, но я слишком много времени проводил в кругах, так что я надеюсь, что кто-то может пролить свет на это здесь для меня. Я обновил веб-приложение на Tomcat и получаю следующую ошибку, которой не было в предыдущей версии. Хотя я совершенно уверен, что часть кода, которую я модифицировал, не виновата, поскольку я протестировал приложение на двух разных серверах разработки.

The production server is configured thus: CentOS 5.4 virtual server with tomcat 5.5.23 running mysql 5.0.77.
The two dev servers are: Windows XP SP2 running tomcat 5.5.23 with mysql 5.1.49
                         Mac OSX 10.6.6 Running tomcat 6 with mysql 5.1.51

Приложение было разработано с использованием Struts (насколько я могу собрать 1.1) с Hibernate 3 в качестве уровня постоянства. Это происходит только на производственном сервере по какой-то причине, которую я не могу понять. Я хотел бы обратить ваше внимание на java.sql.SQLException в нижней части. После долгих поисков я нашел этот , но поскольку он был опубликован несколько лет назад (примерно за 1 год до начала разработки этого приложения, я уверен, что Hibernate эволюционировал из этой версии. Так как я не могу найти способ реализуя его решение. Я использую Eclipse Helios как IDE. Спасибо заранее, что нашли время прочитать это, всем, кто успевает ответить.

javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query
 at fr.company.action.login.LoginAction.execute(LoginAction.java:219)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113)
 at java.lang.Thread.run(Thread.java:636)


javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query
 at fr.company.action.login.LoginAction.execute(LoginAction.java:219)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113)
 at java.lang.Thread.run(Thread.java:636)
java.lang.Exception: org.hibernate.exception.SQLGrammarException: could not execute query
 at fr.company.dao.GenericDAO.findOne(GenericDAO.java:204)
 at fr.company.dao.UserDAO.findOneUser(UserDAO.java:146)
 at fr.company.service.UserPeer.logUser(UserPeer.java:72)
 at fr.company.action.login.LoginAction.execute(LoginAction.java:127)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113)
 at java.lang.Thread.run(Thread.java:636)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
 at org.hibernate.loader.Loader.doList(Loader.java:2153)
 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
 at org.hibernate.loader.Loader.list(Loader.java:2024)
 at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)
 at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:300)
 at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1128)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
 at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:749)
 at fr.company.dao.GenericDAO.findOne(GenericDAO.java:198)
 ... 26 more
Caused by: java.sql.SQLException: Unknown column 'user0_1_.poloSize' in 'field list'
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
 at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
 at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
 at com.mysql.jdbc.Connection.execSQL(Connection.java:2994)
 at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936)
 at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030)
 at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
 at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
 at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
 at org.hibernate.loader.Loader.doQuery(Loader.java:662)
 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
 at org.hibernate.loader.Loader.doList(Loader.java:2150)
 ... 35 more

Ответы [ 3 ]

1 голос
/ 13 января 2011

В сообщении об ошибке ядра говорится:

Unknown column 'user0_1_.poloSize' in 'field list'

Как вы говорите

Сбой возможен только на рабочем сервере

, если это возможночто указанный столбец отсутствует в вашей производственной БД (хотя он присутствует в БД, используемых для тестирования разработки / интеграции)?

0 голосов
/ 13 января 2011

что-то с вашим HQL. попробуйте добавить к hibernate.cfg.xml

<property name="show_sql">true</property>

и добавить дамп SQL в пост (и HQL)

0 голосов
/ 13 января 2011

Похоже, причина вашей проблемы здесь ..:

Причина: java.sql.SQLException: неизвестный столбец 'user0_1_.poloSize' в 'списке полей' at com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:2928)

...