Hibernateでデータベースの予約キーワードを使用するには?
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が発生します…
溶液
1. キーワードを角括弧[]で囲みます。
2. 二重引用符( ")を囲むには、単一引用符( ’)を使用します
Hibernate Annotation
これはテーブル列のデフォルトの注釈実装であり、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; }
結論
この同じソリューションは、テーブル名として予約済みキーワードにも適用できます。