2013-09-26 40 views
2

我正在嘗試插入使用休眠和運行到一個問題。當我使用下面的代碼冬眠插入沒有留下蜱

@Override 
    public Serializable addTestResult(Result test_result) { 
     // TODO Auto-generated method stub 
     return getCurrentSession().save(test_result); 
    } 

末查詢看起來是這樣的:

mysql> insert into test_results (db, host) values ('db1', 'host1'); 

它獲取由mysql拒絕,因爲有留在蜱列名失蹤。我怎麼能有休眠加引號的列名,以便查詢看起來是這樣的:

mysql> insert into test_results (`db`, `host`) values ('db1', 'host1'); 
+1

我不認爲這是一個無效的聲明爲MySQL。你是否收到語法錯誤或其他錯誤? – porfiriopartida

+2

@porfiriopartida直到您使用MySQL保留關鍵字列名稱。 – adarshr

+0

Right .. http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html我認爲這只是爲了防止命名問題(如phpmyadmin的做法)對於超過1個字的表和字段...有趣。 – porfiriopartida

回答

2

報價表/列名您需要引用在你的.hbm.xml或映射註釋`反單引號。

例如:

<property name='DB" column='`db`' /> 
@Column(name="`db`") 

這告訴Hibernate這些標識符引用到數據庫中。我使用這個,例如,用戶名錶。與任何應用程序一樣,大多數表&列名不衝突,但user往往是SQL關鍵字。

您不需要全局切換引用。

+1

這有幫助。謝謝 – user1647708