sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo mapear un campo de entidad cuyo nombre es una palabra reservada en JPA

Con Hibernate como proveedor de JPA 1.0, puede escapar de una palabra clave reservada encerrándola entre comillas graves:

@Column(name="`open`")

Esta es la sintaxis heredada de Hiberate Core:

5.4. Identificadores entrecomillados de SQL

Puede obligar a Hibernate a citar un identificador en el SQL generado encerrando el nombre de la tabla o columna entre comillas invertidas en el documento de mapeo. Hibernate usará el estilo de comillas correcto para el dialecto SQL. Normalmente son comillas dobles, pero SQL Server usa corchetes y MySQL usa comillas invertidas.

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

En JPA 2.0, la sintaxis está estandarizada y se convierte en:

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

Referencias

  • Guía de referencia de Hibernate
    • 5.4. Identificadores entrecomillados de SQL
  • Especificación JPA 2.0
    • 2.13 Denominación de los objetos de la base de datos

Preguntas relacionadas

  • Hibernate, MySQL y tabla llamada "Repetir" - comportamiento extraño
  • Escape automático de palabras reservadas para tablas y columnas de Hibernate