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 ?

30
demandé sur naXa 2013-05-07 12:08:38

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

55
répondu Tobb 2017-11-05 18:44:24

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

0
répondu DataNucleus 2017-11-05 18:46:43

utiliser @Size(max = 1337) . Il ne génère varchar(1337)

-6
répondu Anudeep Sharma 2015-10-20 10:52:36