Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como mapear um campo de entidade cujo nome é uma palavra reservada em JPA


Com o Hibernate como provedor JPA 1.0, você pode escapar de uma palavra-chave reservada colocando-a entre acentos graves:
@Column(name="`open`")

Esta é a sintaxe herdada do Hiberate Core:

5.4. Identificadores SQL entre aspas


Você pode forçar o Hibernate a citar um identificador no SQL gerado colocando o nome da tabela ou coluna entre os acentos no documento de mapeamento.
<class name="LineItem" table="`Line Item`">
    <id name="id" column="`Item Id`"/><generator class="assigned"/></id>
    <property name="itemNumber" column="`Item #`"/>
    ...
</class>

No JPA 2.0, a sintaxe é padronizada e se torna:
@Column(name="\"open\"")

Referências

  • Guia de referência do Hibernate
    • 5.4. Identificadores entre aspas do SQL
  • Especificação JPA 2.0
    • 2.13 Nomenclatura de objetos de banco de dados

Perguntas relacionadas

  • Hibernate, MySQL e tabela chamada “Repeat” - comportamento estranho
  • Escape automático de palavras reservadas para tabelas e colunas do Hibernate