Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment augmenter la longueur d'une chaîne dans mysql lors du mappage à l'aide de JPA

C'est parce que la longueur par défaut de VARCHAR colonnes dans les instructions DDL créées par la plupart des fournisseurs JPA (y compris Hibernate et EclipseLink) est de 255. Spécification de la length attribut à la @Column l'annotation permet de remplacer la valeur, de sorte que la nouvelle valeur est récupérée par le générateur de schéma du fournisseur JPA.

C'est une hypothèse erronée. Le fournisseur JPA créera des tables une seule fois et ne modifiera pas dynamiquement la longueur de la table sous-jacente pendant la durée de vie de l'application, et uniquement si vous configurez le fournisseur pour créer/mettre à jour les définitions de table en premier lieu. De plus, le mappage par défaut de String est le SQL VARCHAR saisir.

Vous semblez avoir configuré le fournisseur JPA pour créer des tables selon les besoins (après les avoir éventuellement supprimées), lors du processus d'initialisation. Si vous utilisez Hibernate, cela se fait en utilisant le hibernate.hbm2ddl.auto propriété spécifiée dans persistence.xml avec une valeur de update , create ou create-drop . Avec EclipseLink, vous spécifiez la propriété eclipselink.ddl-generation avec une valeur de create-tables ou drop-and-create-tables .

Les deux propriétés ci-dessus ne sont pas recommandées pour une utilisation dans une production environnement . L'approche idéale est d'avoir des scripts DDL pour créer les tables. Depuis, vous utilisez VARCHAR , vous devez spécifier une longueur appropriée dans la définition de la colonne, pour s'adapter à la longueur maximale de l'entrée utilisateur . De plus, puisque vous utilisez VARCHAR sur CHAR , le moteur de base de données veillera à ce que l'espace de stockage alloué dépende de la taille des enregistrements stockés.

Si vous n'avez pas besoin d'une chaîne pour le VARCHAR par défaut mappage et utilisez à la place un autre mappage valide, vous devez alors utiliser columnDefinition attribut de la @Column annotation. Un exemple d'utilisation pour mapper Calendar au TIMESTAMPTZ Le type de données SQL est affiché dans le JPA WikiBook ; vous devrez le modifier en fonction de vos besoins.