@Column(name="open")
Verwenden des SQL Server-Dialekts im Ruhezustand.
[SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null, creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null, sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid))
[SchemaUpdate] Incorrect syntax near the keyword 'open'.
Ich hätte erwartet, dass der Ruhezustand beim Erstellen der Tabelle einen Bezeichner in Anführungszeichen verwendet.
Irgendwelche Ideen, wie man damit umgeht ... außer das Feld umzubenennen?
Antworten:
Hatte das gleiche Problem, aber mit einem Tabellennamen namens
Transaction
. Wenn Sie einstellenDann werden alle Datenbankkennungen in Anführungszeichen gesetzt.
Ich habe meine Antwort hier gefunden. Sonderzeichen im Tabellennamen Ruhezustand mit Fehler
Alle verfügbaren Einstellungen finden Sie hier https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/appendices/Configurations.html
Es konnten jedoch keine besseren Dokumente dafür gefunden werden.
In meinem Fall befand sich die Einstellung in meiner Spring-Eigenschaftendatei. Wie in den Kommentaren erwähnt, kann es sich auch um andere Konfigurationsdateien handeln, die sich auf den Ruhezustand beziehen.
quelle
persistence.xml
für JBoss-Projekten.Mit Hibernate als JPA 1.0-Anbieter können Sie ein reserviertes Schlüsselwort umgehen, indem Sie es in Backticks einschließen:
Dies ist die von Hiberate Core geerbte Syntax:
In JPA 2.0 ist die Syntax standardisiert und lautet:
Verweise
Verwandte Fragen
quelle
@Column(name="[open]")
ist viel schöner :)Wenn Sie wie unten gezeigt verwenden, sollte es funktionieren
quelle
Manuelles Entkommen der reservierten Schlüsselwörter
Wenn Sie JPA verwenden, können Sie mit doppelten Anführungszeichen davonkommen:
Wenn Sie die native Hibernate-API verwenden, können Sie diese mithilfe von Backticks umgehen:
Reservierte Schlüsselwörter werden automatisch ausgeblendet
Wenn Sie reservierte Schlüsselwörter automatisch umgehen möchten, können Sie die Eigenschaft
true
Hibernate-spezifischehibernate.globally_quoted_identifiers
Konfiguration festlegen :Yaml-Format
Weitere Informationen finden Sie in diesem Artikel .
quelle
Dies wird sicher funktionieren. Das gleiche Problem trat bei mir auf, als ich den Winterschlaf lernte.
quelle
Nein - Ändern Sie den Spaltennamen.
Dies ist datenbankspezifisch und Sie können eine solche Spalte einfach nicht erstellen. Schließlich sendet der Ruhezustand schließlich DDL an die Datenbank. Wenn Sie mit diesem Spaltennamen keine gültige DDL erstellen können, bedeutet dies, dass der Ruhezustand ebenfalls nicht möglich ist. Ich glaube nicht, dass Zitate das Problem lösen würden, selbst wenn Sie die DDL schreiben.
Auch wenn es Ihnen irgendwie gelingt, dem Namen zu entkommen - ändern Sie ihn. Es funktioniert mit dieser Datenbank, aber nicht mit einer anderen.
quelle
Einige JPA-Implementierungen (z. B. die von mir verwendete, DataNucleus) zitieren automatisch die Kennung für Sie, sodass Sie diese nie erhalten.
quelle