sql >> データベース >  >> RDS >> Sqlserver

名前がJPAの予約語であるエンティティフィールドをマップする方法

    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のテーブルと列の予約語の自動エスケープ


    1. APEX_ZIPの例

    2. SQLite MAX

    3. データベースモデリング

    4. OracleでNVL()関数を使用する方法