使用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
- 属性,还是需要使用columnDefinition
- 属性?
答案 0 :(得分:65)
几个月过去了,获得了新的知识,所以我将回答我自己的问题:
@Lob
@Column
final String someString;
产生最正确的结果。使用hbm2ddl
我使用的版本时,会使用text
将其转换为SqlServerDialect
类型。自varchar(max)
is the replacement for text
的较新版本SQL Server以来,hbm2ddl
的较新版本有望为此类映射生成varchar(max)
而不是text
(I'}我现在坚持使用一个相当陈旧的Hibernate版本。)
答案 1 :(得分:0)
由于length
在JPA规范中定义,javadocs定义为int
类型且max
不是int
,因此可以安全地假设您已被委托给columnDefinition
数据存储区相关路由。但是,varchar(max)
无论如何都依赖于数据存储区。
答案 2 :(得分:-1)
您可以使用此代码-
型号代码:
@NotNull
@Length(max = 7)
@Column(name = "Gender")
private String gender;
SQL输出类似于-
> gender varchar(7)
答案 3 :(得分:-1)
嗨,下面的代码解决了同样的问题
@Column(columnDefinition="TEXT")
@Lob
final String someString;
答案 4 :(得分:-5)
使用@Size(max = 1337)
。它会生成varchar(1337)