2017-09-15 74 views
1

你好我在執行hibernate,當我試圖插入新記錄獲得異常org.hibernate.exception.sqlgrammarexception獲取例外:org.hibernate.exception.sqlgrammarexception

hibernate.cfg.xml文件:

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_db</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password">system</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">true</property> 
     <property name="format_sql">true</property> 
     <property name="hbm2ddl.auto">create</property> 
     <mapping class="com.hib.UserDetails"/> 
    </session-factory> 
</hibernate-configuration> 

如果我改變

<property name="hbm2ddl.auto">update</property> 
      <mapping class="com.hib.UserDetails"/> 

它的工作,但我必須手動創建表。 可能是什麼問題?

+0

我的建議是不用專門選擇方言,除非你100%確保你選擇是正確的。 Hibernate非常擅長確定連接到的數據庫類型。如果您需要更多幫助,則需要在發生異常的地方發佈代碼。 – JamesENL

回答

0

查找一段代碼,你扔你的SQL/HQL查詢。 這裏你可能會發現一些簡單卻很難找到像拼寫錯誤的命令,等錯誤。 這就是爲什麼SQL「語法」例外

0

檢查映射類「UserDeatails」。

有手動創建表和的UserDetails映射類之間的失配。

可能不匹配COLUMN_NAMES,ID,約束..等

0

檢查表和匹配列名與在豆@column註釋列名。最可能的是它的列不匹配。

0

你能張貼異常的堆棧跟蹤,也將有所幫助,如果你可以張貼這將用戶添加到數據庫的代碼。 它可能是數據庫表的列名和聲明的變量的問題。

<property name="show_sql">true</property> 
<property name="format_sql">true</property> 

這些都必須生成SQL語句,檢查是否有在生成的SQL語句錯誤。發佈SQL也有幫助。

相關問題