JPA - comment définir la colonne string à varchar (max) dans DDL
avec JPA , génération DDL pour l'attribut:
@Column
final String someString;
sera someString varchar(255) null
@Column(length = 1337)
final String someString;
donnera someString varchar(1337) null
.
mais comment puis-je l'obtenir pour produire someString varchar(max) null
?
est-il possible d'utiliser l'attribut length
, ou dois-je utiliser l'attribut columnDefinition
?
3 réponses
quelques mois ont passé, de nouvelles connaissances acquises, donc je vais répondre à ma propre question:
@Lob
@Column
final String someString;
donne le résultat le plus correct. Avec la version de hbm2ddl
que j'utilise, elle sera transformée en text
avec SqlServerDialect
. Depuis varchar(max)
est le remplacement de text
dans les nouvelles versions de SQL Server , si tout va bien, les nouvelles versions de hbm2ddl
donnera varchar(max)
au lieu de text
pour ce type de cartographie (je suis coincé à une version assez datée D'hibernation en ce moment..)
étant donné que length
est défini dans les spécifications JPA et javadocs comme int
type et max
n'est pas un int
alors il est sûr de supposer que vous êtes consignée à la columnDefinition
route dépendante de la base de données. Mais varchar(max)
est de toute façon dépendant des données.
utiliser @Size(max = 1337)
. Il ne génère varchar(1337)