2013-05-07 18 views
24

Mit JPA, DDL-Generation für das Attribut setzen:JPA - Wie String-Spalte zu varchar (max) in DDL

@Column 
final String someString; 

wird someString varchar(255) null

@Column(length = 1337) 
final String someString; 

someString varchar(1337) null ergibt.

Aber wie kann ich es someString varchar(max) null produzieren?

Ist es möglich, das length -Attribut zu verwenden, oder muss ich das columnDefinition-Attribut verwenden?

Antwort

47

Einige Monate sind vergangen, neues Wissen erworben, also werde ich meine eigene Frage beantworten:

@Lob 
@Column 
final String someString; 

ergibt das korrekteste Ergebnis. Mit der von mir verwendeten Version hbm2ddl wird diese in den Typ text mit SqlServerDialect umgewandelt. Da varchar(max) is the replacement for text in neueren Versionen von SQL Server hoffentlich neueren Versionen von hbm2ddl ergeben wird varchar(max) statt text für diese Art von Mapping (Ich bin in einer ziemlich die Version des Hibernate stecken im Moment ..)

0

Seit length ist in der JPA-Spezifikation und javadocs als int Art und max definiert ist kein int dann sicher es ist anzunehmen, dass Sie in die columnDefinition Datenspeicher-abhängige Strecke befördert sind. Aber dann ist varchar(max) sowieso datenspeicherabhängig.

+3

Andere Stellen im Projekt große Texte wurden mit '@ Lob' versehen, was zu einem' text' SQL-Datentyp führt. Werde das Gleiche tun .. – Tobb

-5

Verwendung @Size(max = 1337). Es erzeugt varchar(1337)

Verwandte Themen