新的起點

          新的起點
          隨筆 - 9, 文章 - 1, 評論 - 1, 引用 - 0
          數據加載中……

          誤用SQL Server關鍵字導致的問題

           

          剛才在練習使用Hibernate的復合主鍵例子時,自己很自信的認為已經領悟了其中的原理,于是開始制作例子程序。恩,想起前段時間確實有個可以利用復合主鍵的地方,那就是公寓寢室表,于是開始建立數據庫表:

          利用Eclipse自動生成機制,很快就完成了映射文件等的生成,測試一下,卻發覺出現錯誤

           1WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
           2
           3log4j:WARN Please initialize the log4j system properly.
           4
           5Hibernate: insert into HAIING.dbo.DORMROOM (desc, dorm, room) values (???)
           6
           7org.hibernate.exception.GenericJDBCException: could not insert: [com.haiing.hibernate.fuhezhujian.DormRoom]
           8
           9    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
          10
          11    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
          12
          13    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
          14
          15    at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1869)
          16
          17    at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)
          18
          19    at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)
          20
          21    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
          22
          23    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
          24
          25    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
          26
          27    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
          28
          29    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
          30
          31    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
          32
          33    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
          34
          35    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
          36
          37    at com.haiing.hibernate.fuhezhujian.DormRoomOperate.insert(DormRoomOperate.java:26)
          38
          39    at com.haiing.hibernate.fuhezhujian.Test2PK.main(Test2PK.java:19)
          40
          41Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關鍵字 'desc' 附近有語法錯誤。
          42
          43    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
          44
          45    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
          46
          47    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
          48
          49    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
          50
          51    at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
          52
          53    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
          54
          55    at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
          56
          57    at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
          58
          59    at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
          60
          61    at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
          62
          63    at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
          64
          65    at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
          66
          67    at com.microsoft.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Source)
          68
          69    at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:22)
          70
          71    at org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1853)
          72
          73     12 more
          74



          郁悶了很長時間,開始以為是主鍵類復寫的hash類和equals類有錯誤,于是使用org.apache.commons.lang中的對應方法重寫,可還是不行。端詳了很長時間,每一種可能的錯誤都考慮了,感覺沒啥錯誤了呀!

          又看了一遍錯誤的代碼,發覺已經生成了HQL語句,而且錯誤代碼幾乎全是數據庫的問題。數據庫的驅動包我已經加進來了,而且在其他的例子中運行很正常呀!莫非是提交語句的錯誤,看了一下看不出什么來,莫非是數據庫的問題?去查看表,發覺有點怪怪的!


          這個desc怎么成介個樣子了,莫非設置成復合主鍵之后就成了這個樣子,加進一個新的字段沒有呀。嘿嘿,那我就刪了這個字段,在重新加進來。結果還是不行!
          這時我又調整了思路,把生成的SQL語句復制到查詢分析器中執行,還是顯示“在關鍵字 'desc' 附近有語法錯誤”,我暈!看來就是數據庫的問題了。等等,我突然意識到什么了!

          關鍵字?

          desc?

          莫非?不是莫非,就是這樣呀,我怎么忘得一干二凈了,desc這么好的詞匯早就被前輩們定義成關鍵字了,怎么會留給我來使用呢!
                
          改掉desc,一切問題全部解決了,數據成功的插入到數據庫之中!

          唉,慚愧呀~

          posted on 2008-01-29 18:06 軋鋼王子 閱讀(950) 評論(0)  編輯  收藏 所屬分類: Hibernate


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阿城市| 微博| 吴忠市| 白水县| 南郑县| 郴州市| 盐山县| 平远县| 界首市| 涪陵区| 景宁| 绥滨县| 赤水市| 黄龙县| 关岭| 绥芬河市| 抚远县| 通许县| 永修县| 平远县| 湘乡市| 望江县| 定襄县| 金山区| 井陉县| 汾阳市| 广宗县| 博湖县| 甘谷县| 陆河县| 桐城市| 独山县| 开化县| 晋中市| 两当县| 抚远县| 常宁市| 南宁市| 武邑县| 科技| 日照市|