將tomcat+struts+hibernate+MySQL的一個小項目移植到sqlserver2000中,發現出現錯誤.
[DEBUG] SessionImpl - opened session
[DEBUG] SessionImpl - Flushed: 0 insertions, 0 updates, 0 deletions to 0 objects
[DEBUG] SessionImpl - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
[DEBUG] QueryTranslator - HQL: select user from com.shjinbang.hibernate.User user
[DEBUG] QueryTranslator - SQL: select user0_.userid as x0_0_ from user user0_
[DEBUG] SessionFactoryImpl - prepared statement get: select user0_.userid as x0_0_ from user user0_
Hibernate: select user0_.userid as x0_0_ from user user0_
[DEBUG] JDBCExceptionReporter - SQL Exception <com.jnetdirect.jsql.JSQLException: 在關鍵字 'user' 附近有語法錯誤。>com.jnetdirect.jsql.JSQLException: 在關鍵字 'user' 附近有語法錯誤。
査google發現sqlserver竟然將user作為關鍵字,不讓用戶建立以user命名的表或字段,除非寫成[user],而MySQL沒有這個情況.
將user改成employees後運行成功.當然,HQL語句中的相關user的名稱也要同時修改.
總結經驗,以後數據庫命名要適當的復雜點,不要和關鍵子撞車.這個問題査了我半天時間