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.