Hibernate 與 MySql 資料庫關鍵字衝突You have an error in your SQL syntax; check the manual
誒..說來,實在是慚愧.一個錯誤.害慘我了..搞了幾個小時.. 今天使用JSF+Spring+Hibernate框架 和mysql資料庫做專案時,發生一個異常..
我萬萬沒有想到..居然是關鍵字,所引起的..
具體Hibernate生成的sql語句如下:
Hibernate:
insert
into
pl_roles_acl
(ROLE_NAME, SORT_ORDER, RESOURCE_NAME, READ, CREATE, UPDATE
, DELETE, EXECUTE)
values
(?, ?, ?, ?, ?, ?, ?, ?)
2011-01-05 15:55:27,296 [WARN ] org.hibernate.util.JDBCExceptionReporter - SQL Error: 1064, SQLState: 42000
2011-01-05 15:55:27,296 [ERROR] org.hibernate.util.JDBCExceptionReporter - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'READ, CREATE, UPDATE, DELETE, EXECUTE) values ('SAP', 4, 'userMaintenance', 0, 0' at line 1
2011-01-05 15:55:27,296 [ERROR] org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:171)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
做專案的時候, 朋友們, 千萬要避免mysql或者其他資料有關鍵字的問題..
如果有關鍵字 ..
也可以,在所對應的 .XXX.Hibernate.hbm.xml 檔案裡面改 ,具體操作如下:
看紅色的標記,. 在關鍵字中 加 "[]" .或者 加, \" \" 或者 '"READ" '..都行
<!-- 在角色物件中拿到所有的許可權;-->
<list name="acEntry" lazy="false" table="pl_roles_acl" >
<key column="ROLE_NAME" />
<list-index base="0" column="SORT_ORDER"/>
<composite-element class="com.rs.common.core.model.AccessControlEntry" >
<property name="entryName" type="java.lang.String">
<column name="RESOURCE_NAME" sql-type="varchar" not-null="true" />
</property>
<property name="permissionRead" >
<column name="[READ]" not-null="false" />
</property>
<property name="permissionCreate">
<column name="[CREATE]" not-null="false" />
</property>
<property name="permissionModify">
<column name="[UPDATE]" not-null="false" />
</property>
<property name="permissionDelete">
<column name="[DELETE]" not-null="false" />
</property>
<property name="permissionExecute">
<column name="[EXECUTE]" not-null="false" />
</property>
</composite-element>
</list>
相關文章
- 萬能方法解決——You have an error in your SQL syntaxErrorSQL
- Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQLMySqlJDBCExceptionError
- MySQL 主鍵衝突,無法插入資料MySql
- Git衝突:commit your changes or stash them before you can merge.GitMIT
- 資料庫 關鍵字資料庫
- 資料庫關鍵字資料庫
- 資料庫SQL語句中關於explain關鍵字的用法資料庫SQLAI
- Git更新本地倉庫及衝突"Commit your changes or stash them before you can merge"解決GitMIT
- mysql database manual(mysql資料庫手冊)MySqlDatabase資料庫
- 解決 Git 更新本地衝突:commit your changes or stash them before you can mergeGitMIT
- Git衝突:commit your changes or stash them before you can merge. 解決辦法GitMIT
- IP衝突 資料庫時斷時續資料庫
- 批量插入資料時主鍵衝突的處理
- 在資料庫中查詢關鍵字資料庫
- MySQL 資料庫與 SQL 優化MySql資料庫優化
- SSIS 資料庫排序規則衝突問題資料庫排序
- 怎樣關閉hibernate對資料的緩衝?
- 登陸peoplesoft報:Site name is not valid. Check your url syntax and try again.AI
- git-----You have not concluded your merge (MERGE_HEAD exists)解決Git
- windows10玩遊戲鍵盤衝突怎麼辦 win10遊戲與鍵盤衝突解決方法Windows遊戲Win10
- jQuery多庫衝突jQuery
- 如何解決邏輯刪除與資料庫唯一約束衝突資料庫
- 【SQL】13 SQL 別名、SQL 連線(JOIN)、SQL INNER JOIN 關鍵字、SQL LEFT JOIN 關鍵字、SQL RIGHT JOIN 關鍵字、SQL FULL OUTER JSQL
- MySql插入唯一鍵衝突的三種可選方式MySql
- 【MySQL】ERROR 1093 You canMySqlError
- How to check why identical SQL Statements have high version countIDESQL
- T-SQL with關鍵字SQL
- mysql忽略主鍵衝突、避免重複插入的幾種方式MySql
- mysql 忽略主鍵衝突、避免重複插入的幾種方式MySql
- 生產環境mysql主主同步主鍵衝突處理MySql
- openGauss備庫wal-replay與query衝突
- PostgreSQL 資料庫中 DISTINCT 關鍵字的 4 種用法SQL資料庫
- 資料庫補丁衝突解決方案 (文件 ID 1674432.1)資料庫
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫
- SQL Server資料庫備份保護的關鍵UMSQLServer資料庫
- abstract關鍵字 super 關鍵字 類與繼承繼承
- 海量資料遷移之衝突資料篩查
- SQL Server 和 MySql 語法和關鍵字的區別ServerMySql