Unter Verwendung reserviert JPQL Keywords mit JPA
Frage
Ich habe eine Entity-Klasse namens „Gruppe“ und NetBeans warnt mich „Der Entität Tabellenname ist ein reserviertes Java Persistence QL Schlüsselwort“.
Ein ähnlicher Fall wäre die Verwendung von reservierten SQL-Schlüsselwort sein.
Wird dieser Name entgangen sein? Würde die Verwendung eines anderen Tabellennamen das Problem @Table (name = „other“) lösen. Oder sollte ich die Klasse umbenennen?
Lösung
Wird dieser Name entgangen sein?
Es ist nichts in der JPA-Spezifikation, das so sagt, wenn Ihr Provider der Fall ist, ist dieser Anbieter spezifisch.
würde die Verwendung eines anderen Tabellennamen lösen das Problem @Table (name = "other")
Natürlich wäre es (solange Sie kein anderes reserviertes Schlüsselwort natürlich verwenden). Aber wenn Sie einen JPA 2.0-Provider verwenden, gibt es eine Standardmethode einen db Objektname entkam, mit doppelten Anführungszeichen zu bekommen:
@Table(name="\"Group\"")
In JPA 1.0, gibt es nichts, Standard, es hängt von Ihren JPA-Provider. Zum Beispiel, Hibernate verwendet Backticks:
@Table(name="`Group`")
Oder soll ich die Klasse umbenennen?
Nein. Der Tabellenname eines Unternehmens hat standardmäßig die Einheit Name, aber Sie können es steuern die @Table
Anmerkung verwenden, wie wir gesehen haben. Es besteht also keine Notwendigkeit, die Klassennamen Ihres Unternehmens zu ändern.
Andere Tipps
Sie müssen nicht die Klasse umbenennen - und Sie sollten nicht - der Name, den Sie gewählt haben, spiegelt Ihre Domain in der besten Art und Weise, und Sie sollten es nicht aufgrund von Einschränkungen Werkzeug oder Rahmen ändern, falls das Werkzeug / Framework bietet eine Möglichkeit, den „Kampf“ zu vermeiden. JPA bietet eine solche Art und Weise.