今天朋友叫俺去幫忙調一下程序,是Hibernate+MySql的問題,可以向數據庫中插入數據,但是在查詢的時候,拋出如下異常:
org.hibernate.exception.GenericJDBCException: could not execute query
?at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
?at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
?at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
?at org.hibernate.loader.Loader.doList(Loader.java:1596)
?at org.hibernate.loader.Loader.list(Loader.java:1577)
?at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
?at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
?at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
?at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
?at com.lk.yk.hibernate.operation.TypeOperation.SelectAll(TypeOperation.java:55)
?at com.lk.yk.hibernate.operation.TypeOperation.main(TypeOperation.java:84)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
STACKTRACE:
java.io.EOFException
?at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
?at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
?at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
?at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
?at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
?at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
?at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
?at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
?at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
?at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
?at org.hibernate.loader.Loader.doQuery(Loader.java:391)
?at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
?at org.hibernate.loader.Loader.doList(Loader.java:1593)
?at org.hibernate.loader.Loader.list(Loader.java:1577)
?at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
?at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
?at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
?at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
?at com.lk.yk.hibernate.operation.TypeOperation.SelectAll(TypeOperation.java:55)
?at com.lk.yk.hibernate.operation.TypeOperation.main(TypeOperation.java:84)
** END NESTED EXCEPTION **
Last packet sent to the server was 47 ms ago.
?at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2515)
?at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
?at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
?at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
?at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
?at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
?at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
?at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
?at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
?at org.hibernate.loader.Loader.doQuery(Loader.java:391)
?at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
?at org.hibernate.loader.Loader.doList(Loader.java:1593)
?... 7 more
Exception in thread "main" java.lang.NullPointerException
?at com.lk.yk.hibernate.operation.TypeOperation.main(TypeOperation.java:84)
??????這個異常,俺還是第一次碰到過,看了看查詢方法,也沒有錯呀,又重新試了一下,還不同樣的情況,看來朋友沒有誤報,沒轍,誰讓咱水平淺來呢,走人,到GOOGLE上逛去,一查說是驅動JAR不對,google確實是好東西,一查就有,呵呵,那個舒服呀,問朋友服務器是用的什么版本的MYSQL,說是5.0的<其實不是5.0的>,俺就從網上下了一個相應版本的JAR,呵呵,俺想這次可行了吧,呵呵,沒有想到,不成,還是不行。這下俺是徹底的沒轍了,水平淺,那咱找別人,又找了一個哥們過來,三兩下,解決了,一問,只不過換了一個版本更底的JAR,我那個恨呀。
嘮叨這么多,不為別的,呵呵,俺只想在這里給自己敲一下警鐘,同樣是解決問題,為什么別人能找到問題所在,而咱找不到,應該想想這個問題,雖然工作經驗少,但這不應該成為狡辯的理由,應該深刻的反思一下......該去增強一下內功了,
??????呵呵,不多說了,走人,俺先反思,去練功去了,終有一天俺也會成為一個內功深厚的武林高手的......