Mit JPA , DDL-Generierung für das Attribut:
@Column
final String someString;
wird someString varchar(255) null
sein
@Column(length = 1337)
final String someString;
ergibt someString varchar(1337) null
.
Aber wie bekomme ich es, someString varchar(max) null
zu produzieren?
Ist es möglich, das Attribut length
- zu verwenden, oder muss ich das Attribut columnDefinition
- verwenden?
Einige Monate sind vergangen, neues Wissen erlangt, also beantworte ich meine eigene Frage:
@Lob
@Column
final String someString;
liefert das korrekteste Ergebnis. Mit der Version von hbm2ddl
, die ich verwende, wird diese mit text
in den Typ SqlServerDialect
umgewandelt. Da varchar(max)
DER ERSATZ FÜR text
in neueren Versionen von SQL Server ist, ergeben hoffentlich neuere Versionen von hbm2ddl
varchar(max)
anstelle von text
für diese Art von Mapping (ich bin bei einer recht veralteten Version von Überwintern im Moment ..)
Sie können diesen Code verwenden -
Modellnummer:
@NotNull
@Length(max = 7)
@Column(name = "Gender")
private String gender;
SQL-Ausgabe ist wie-
> gender varchar(7)
Da length
in der JPA-Spezifikation und den Javadocs als int
-Typ definiert ist und max
keine int
ist, können Sie davon ausgehen, dass Sie auf die columnDefinition
-Datastore-abhängige Route übertragen werden. Dann ist varchar(max)
ohnehin vom Datastore abhängig.