Java EE 之 Hibernate異常總結【4】org.hibernate.exception.SQLGrammarException: could not execute statement


本質原因:配置的Java Bean,由Hibernate自動產生的SQL語句中有語法錯誤

原因如下:

  情況1.存在字段名/表名與數據庫關鍵字沖突

  情況2.MySQL5.0以后與MySQL5.0以前事務引擎InnoDB配置微妙不同

//MySQL 5.0之后【engine = InnoDB】
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

//NySQL 5.0之前【type = InnoDB】
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

  情況3:@Column的注解中的屬性columnDefinition出問題

//正確
columnDefinition="int comment '房間可住人數上限'"

//錯誤:原因:如果不加字段屬性,hibernate反射時,會將comment視為字段名,將發生關鍵字沖突錯誤。
columnDefinition="comment '房間可住人數上限'"

  情況4:數據類型轉換錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM