53

使用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?

4

5 回答 5

103

几个月过去了,获得了新知识,所以我将回答我自己的问题:

@Lob
@Column
final String someString;

产生最正确的结果。使用我正在使用的版本hbm2ddl,这将转换为text带有SqlServerDialect. 由于是在较新版本的SQL Servervarchar(max)中的替代品text,希望较新版本的将产生而不是用于这种类型的映射(我现在被困在一个相当过时的 Hibernate 版本中......)hbm2ddlvarchar(max)text

于 2014-02-26T19:24:08.580 回答
0

由于length在 JPA 规范和 javadocs 中定义为int类型并且max不是类型,int因此可以安全地假设您被委托到columnDefinition依赖于数据存储的路由。但是varchar(max)无论如何都是依赖于数据存储的。

于 2013-05-07T08:18:11.257 回答
-1

嗨,下面的代码解决了同样的问题

@Column(columnDefinition="TEXT")

@Lob

final String someString;
于 2021-03-26T08:40:05.393 回答
-5

使用@Size(max = 1337). 它确实产生varchar(1337)

于 2015-10-20T10:36:15.860 回答
-5

您可以使用此代码 -

型号代码:

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

SQL 输出就像 -

> gender varchar(7)
于 2019-04-28T09:06:25.077 回答