web-dev-qa-db-fra.com

JPA - Comment définir la colonne string sur 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;

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-? 

32
Tobb

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 ..)

60
Tobb

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.

0
DataNucleus