2013-05-07 47 views
24

設置字符串列爲varchar(最多)JPA,DDL代的屬性:JPA - 如何DDL

@Column 
final String someString; 

someString varchar(255) null

@Column(length = 1337) 
final String someString; 

將產生someString varchar(1337) null

但我怎樣才能讓它產生someString varchar(max) null

是否有可能使用length-attribute,或者我需要使用columnDefinition-attribute?

回答

47

幾個月過去了,新的知識儲備,所以我會回答我的問題:

@Lob 
@Column 
final String someString; 

得到最正確的結果。隨着我使用的版本hbm2ddl,這將被轉換爲類型textSqlServerDialect。由於在SQL Server新版本varchar(max) is the replacement for text,希望的hbm2ddl新版本將產生varchar(max),而不是text這種類型的映射(我卡在休眠的一個非常陳舊的版本此刻..)

0

由於length在JPA規範和Javadoc爲int類型和max定義不是int那麼它是安全的假設,你委託給columnDefinition數據存儲相關的路線。但無論如何,varchar(max)依賴於數據存儲區。

+3

項目大文本中的其他地方用'@ Lob'註釋,這會導致'text' SQL-數據類型。會做同樣的.. – Tobb 2013-05-07 11:13:23

-5

使用@Size(max = 1337)。它確實生成varchar(1337)