Automatisches reserviertes Wort, das für Hibernate-Tabellen und -Spalten entweicht
Ich versuche, verwenden Sie eine Hibernate mapping für mehrere verschiedene Datenbanken: H2, Oracle, MySql.
Jede Datenbank hat eine andere Liste der reservierten Wörter.
Möchte ich Hibernate automatisch die Flucht der reservierten Wörter.
Ich weiß, ich kann:
- verwenden backticks zu zwingen, die Flucht (escape-alles nur, um sicher zu sein)
- ändern alle Bezeichner, so sind Sie sicherlich nicht, die keywords in einer Datenbank (machen Sie hässlich)
- Band-schema einer bestimmten Gruppe von Datenbanken, die Flucht der union von keywords (wird brechen, wenn ich hinzufügen neue Datenbank, um die Mischung)
Gibt es eine elegantere Lösung?
InformationsquelleAutor der Frage Roman Zenka | 2010-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
AFAIK Hibernate nicht pflegen Sie eine Liste der reservierten Schlüsselwort (pro Datenbank), so dass ich denke, Sie sollten sich auf Datenbank-id zu entkommen.
Wenn Sie mit Hibernate 3.5+, versuchen
hibernate.globally_quoted_identifiers=true
zu zitieren, alle Datenbank-IDS (dies ist etwas, was Sie Hinzugefügt für JPA 2.0 finden Sie auf der secion 2.13 Benennung von Datenbankobjekten der Spezifikation für die Java Persistence API (JPA Weg, um dieses zu aktivieren, wenn Sie mit JPA).Vor version 3.5, Hibernate, bietet keine option Konfiguration für Globale Flucht. Die Implementierung einer benutzerdefinierten
NamingStrategy
zu entkommen, alles transparent wäre der empfohlene Weg.Siehe auch
InformationsquelleAutor der Antwort Pascal Thivent