Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhöhen Sie die Länge eines Strings in mysql beim Mapping mit JPA

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.