JPA での予約キーワードによるエンティティ フィールドのマッピング
JPA で名前が予約キーワードであるエンティティ フィールドを直接マッピングできないと、アプリケーション開発、特に作業時に障害が発生する可能性があります。構文規則を厳密に適用する方言を使用します。ただし、JPA プロバイダーとして Hibernate で利用できる簡単な解決策があります。
バッククォートを使用した識別子エスケープの使用
予約されたキーワードをエスケープするには、予約されたキーワードを @ のバッククォートで囲みます。列の注釈。この機能は Hibernate Core から継承され、SQL ダイアレクトに基づいた正しい引用スタイルをサポートします。 SQL Server の場合、これは引用符に括弧を使用することになります。
JPA 1.0 プロバイダーとしての Hibernate の場合:
@Column(name="`open`")
ログイン後にコピー
JPA 2.0 の場合:
@Column(name="\"open\"")
ログイン後にコピー
これを利用することでこのアプローチでは、Hibernate はテーブル作成時に予約キーワードが適切に引用されていることを保証し、 「open」フィールド。
追加リソース
- [Hibernate リファレンスガイド](https://docs.jboss.org/hibernate/orm/6.0/) userguide/html_single/)
- [5.4. SQL 引用符付き識別子](https://docs.jboss.org/hibernate/orm/6.0/userguide/html/identifiers.html#naming-sql-quoted-identifiers)
- [JPA 2.0 仕様](https ://jcp.org/ja/jsr/detail?id=338)
- [2.13データベース オブジェクトの命名](https://docs.oracle.com/javaee/7/api/javax/persistence/metamodel/Attribute.html#getName--)
関連する質問
- [Hibernate、MySQL、および「Repeat」という名前のテーブル - 奇妙な動作](https://stackoverflow.com/questions/56279222/hibernate-mysql-and-table-named-repeat-strange-behaviour)
- [Hibernate テーブルおよび列](https://stackoverflow.com/questions/24237940/automatic-reserved-word-escaping-for-hibernate-tables-and-columns)
以上がJPA エンティティ フィールドを予約されたキーワードでマッピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。