Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment mapper un champ d'entité dont le nom est un mot réservé dans JPA

Avec Hibernate en tant que fournisseur JPA 1.0, vous pouvez échapper un mot-clé réservé en l'entourant de backticks :

@Column(name="`open`")

Voici la syntaxe héritée d'Hiberate Core :

5.4. Identifiants entre guillemets SQL

Vous pouvez forcer Hibernate à citer un identifiant dans le SQL généré en entourant le nom de la table ou de la colonne de backticks dans le document de mappage. Hibernate utilisera le style de citation correct pour le dialecte SQL. Il s'agit généralement de guillemets doubles, mais SQL Server utilise des crochets et MySQL utilise des backticks.

<class name="LineItem" table="`Line Item`">
    <id name="id" column="`Item Id`"/><generator class="assigned"/></id>
    <property name="itemNumber" column="`Item #`"/>
    ...
</class>

Dans JPA 2.0, la syntaxe est standardisée et devient :

@Column(name="\"open\"")

Références

  • Guide de référence Hibernate
    • 5.4. Identifiants entre guillemets SQL
  • Spécification JPA 2.0
    • 2.13 Nommage des objets de base de données

Questions connexes

  • Hibernate, MySQL et table nommée "Repeat" - comportement étrange
  • Échappement automatique des mots réservés pour les tables et colonnes Hibernate