Dies liegt daran, dass die Standardlänge von VARCHAR
Spalten in DDL-Anweisungen, die von den meisten JPA-Anbietern (einschließlich Hibernate und EclipseLink) erstellt werden, beträgt 255. Angabe der length
Attribut zu @Column
Annotation hilft dabei, den Wert zu überschreiben, sodass der neue Wert vom Schemagenerator des JPA-Anbieters übernommen wird.
Dies ist eine falsche Annahme. Der JPA-Anbieter erstellt Tabellen nur einmal und ändert die Länge der zugrunde liegenden Tabelle während der Lebensdauer der Anwendung nicht dynamisch und nur dann, wenn Sie den Anbieter so konfigurieren, dass er die Tabellendefinitionen überhaupt erstellt/aktualisiert. Außerdem die Standardzuordnung von String
ist der SQL VARCHAR
Typ.
Sie scheinen den JPA-Anbieter so konfiguriert zu haben, dass er während des Initialisierungsprozesses Tabellen nach Bedarf erstellt (nachdem Sie sie möglicherweise gelöscht haben). Wenn Sie Hibernate verwenden, geschieht dies mit hibernate.hbm2ddl.auto
Eigenschaft, die in persistence.xml
angegeben ist mit einem Wert von update
, create
oder create-drop
. Bei EclipseLink würden Sie die Eigenschaft eclipselink.ddl-generation
angeben mit einem Wert von create-tables
oder drop-and-create-tables
.
Beide der oben genannten Eigenschaften werden nicht für die Verwendung in einer Produktion empfohlen Umgebung
. Der ideale Ansatz besteht darin, DDL-Skripts zum Erstellen der Tabellen zu haben. Da verwenden Sie VARCHAR
, sollten Sie in der Spaltendefinition eine geeignete Länge angeben, um der maximalen Länge der Benutzereingabe zu entsprechen . Da Sie außerdem VARCHAR
verwenden über CHAR
, stellt die Datenbank-Engine sicher, dass der zugewiesene Speicherplatz von der Größe der gespeicherten Datensätze abhängt.
Wenn Sie keinen String benötigen, verwenden Sie den Standardwert VARCHAR
Mapping und verwenden Sie stattdessen ein anderes gültiges Mapping, dann müssen Sie columnDefinition
verwenden Attribut von @Column
Anmerkung. Eine Beispielverwendung für die Zuordnung von Calendar
zum TIMESTAMPTZ
Der SQL-Datentyp wird im JPA WikiBook
gezeigt; Sie müssen dies an Ihre Bedürfnisse anpassen.