web-dev-qa-db-ger.com

JPA - Festlegen der String-Spalte in DDL auf varchar (max)

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? 

32
Tobb

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 hbm2ddlvarchar(max) anstelle von text für diese Art von Mapping (ich bin bei einer recht veralteten Version von Überwintern im Moment ..)

60
Tobb

Sie können diesen Code verwenden -

Modellnummer:

@NotNull  
@Length(max = 7)  
@Column(name = "Gender")  
private String gender;

SQL-Ausgabe ist wie-

> gender varchar(7)
0
cm_mehdi

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.

0
DataNucleus