Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come mappare un campo entità il cui nome è una parola riservata in JPA

Con Hibernate come provider JPA 1.0, puoi evitare una parola chiave riservata racchiudendola all'interno di backtick:

@Column(name="`open`")

Questa è la sintassi ereditata da Hiberate Core:

5.4. Identificatori tra virgolette SQL

Puoi forzare Hibernate a citare un identificatore nell'SQL generato racchiudendo il nome della tabella o della colonna tra parentesi nel documento di mappatura. Hibernate utilizzerà lo stile di virgolette corretto per il dialetto SQL. Di solito si tratta di virgolette doppie, ma SQL Server utilizza parentesi e MySQL utilizza le apici inverse.

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

In JPA 2.0, la sintassi è standardizzata e diventa:

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

Riferimenti

  • Guida di riferimento all'ibernazione
    • 5.4. Identificatori tra virgolette SQL
  • Specifica JPA 2.0
    • 2.13 Denominazione degli oggetti del database

Domande correlate

  • Sospensione, MySQL e tabella denominata "Ripeti" - comportamento strano
  • Escaping automatico delle parole riservate per le tabelle e le colonne di sospensione