Avec JPA , génération DDL pour l'attribut:
@Column
final String someString;
sera someString varchar(255) null
@Column(length = 1337)
final String someString;
va donner someString varchar(1337) null
.
Mais comment puis-je le faire produire someString varchar(max) null
?
Est-il possible d'utiliser l'attribut length
- ou dois-je utiliser l'attribut columnDefinition
-?
Quelques mois ont passé, de nouvelles connaissances acquises, je vais donc 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, cela sera transformé en type text
avec SqlServerDialect
. Puisque varchar(max)
EST LE REMPLACEMENT DE text
dans les versions les plus récentes de SQL Server , heureusement, les versions plus récentes de hbm2ddl
donneront varchar(max)
au lieu de text
Hibernate pour le moment ..)
Puisque length
est défini dans les spécifications JPA et javadocs comme étant le type int
et que max
n'est pas une int
, vous pouvez donc supposer que vous êtes consigné dans la route dépendante du magasin de données columnDefinition
. Cependant, varchar(max)
dépend de toute façon du magasin de données.