HibernateをJPA1.0プロバイダーとして使用すると、予約済みのキーワードをバッククォートで囲むことでエスケープできます。
@Column(name="`open`")
これは、Hiberate Coreから継承された構文です:
5.4。 SQL引用識別子
マッピングドキュメントでテーブルまたは列名のバッククォートを囲むことにより、生成されたSQLで識別子を強制的に引用させることができます。HibernateはSQLダイアレクトに正しい引用スタイルを使用します。これは通常二重引用符ですが、SQLサーバーは括弧を使用し、MySQLはバッククォートを使用します。
<class name="LineItem" table="`Line Item`"> <id name="id" column="`Item Id`"/><generator class="assigned"/></id> <property name="itemNumber" column="`Item #`"/> ... </class>
JPA 2.0では、構文は標準化され、次のようになります。
@Column(name="\"open\"")
参考資料
- 休止状態のリファレンスガイド
- 5.4。 SQL引用識別子
- JPA2.0仕様
- 2.13データベースオブジェクトの命名
関連する質問
- Hibernate、MySQL、および「Repeat」という名前のテーブル-奇妙な動作
- Hibernateのテーブルと列の予約語の自動エスケープ