Hibernateでは、列名としてデータベース予約キーワードを持つテーブルにオブジェクトを保存しようとすると、次のエラーが発生する可能性があります。
ERROR JDBCExceptionReporter:78 - 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 'Datadabase reserved keyword....
予約されたキーワード “DESC”
MySQLでは、「DESC」は予約済みのキーワードです。この予約されたキーワードをHibernateで使用する方法を示すいくつかの例を見てみましょう。
Hibernate XMLマッピングファイル
これは、テーブル列のデフォルトのXMLマッピングファイル実装であり、JDBCExceptionが発生します…
<property name="desc" type="string" > <column name="DESC" length="255" not-null="true"/> </property>
解決策
{空} 1。キーワードを角括弧[]で囲みます。
<property name="desc" type="string" > <column name="[DESC]" length="255" not-null="true"/> </property>
{空} 2。一重引用符( ‘)を使用して二重引用符( “)を囲みます。
<property name="desc" type="string" > <column name='"DESC"' length="255" not-null="true"/> </property>
休止状態の注釈
これは、テーブル列のデフォルトの注釈実装です。JDBCExceptionが発生します…
@Column(name = "DESC", nullable = false) public String getDesc() { return this.desc; }
解決策
{空} 1。キーワードを角括弧[]で囲みます。
@Column(name = "[DESC]", nullable = false) public String getDesc() { return this.desc; }
{空} 2。二重引用符( “)を使用して囲みます。
@Column(name = "\"DESC\"", nullable = false) public String getDesc() { return this.desc; }