Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA-如何在DDL中将字符串列设置为varchar(max)_Java_Sql Server_Hibernate_Jpa_Ddl - Fatal编程技术网

Java JPA-如何在DDL中将字符串列设置为varchar(max)

Java JPA-如何在DDL中将字符串列设置为varchar(max),java,sql-server,hibernate,jpa,ddl,Java,Sql Server,Hibernate,Jpa,Ddl,使用,属性的DDL生成: @Column final String someString; 将是someString varchar(255)null @Column(length = 1337) final String someString; 将产生someString varchar(1337)null 但是我如何让它生成someString varchar(max)null 是否可以使用长度-属性,或者我需要使用列定义-属性 由于length在JPA规范和javadocs中定义为in

使用,属性的DDL生成:

@Column
final String someString;
将是
someString varchar(255)null

@Column(length = 1337)
final String someString;
将产生
someString varchar(1337)null

但是我如何让它生成
someString varchar(max)null


是否可以使用
长度
-属性,或者我需要使用
列定义
-属性

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

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

@Lob
@Column
final String someString;

产生最正确的结果。在我使用的
hbm2ddl
版本中,它将被转换为
text
类型,并使用
sqlserverdial
。因为在较新版本的中,希望较新版本的
hbm2ddl
将产生
varchar(max)
,而不是
text
,用于这种类型的映射(我目前被困在一个相当过时的Hibernate版本中……)

使用
@Size(max=1337)
。它确实会生成varchar(1337)

您可以使用此代码-

型号代码:

@NotNull  
@Length(max = 7)  
@Column(name = "Gender")  
private String gender;
SQL输出类似于-

> gender varchar(7)

嗨,下面的代码修复了相同的问题

@Column(columnDefinition="TEXT")

@Lob

final String someString;

项目中的其他地方用
@Lob
注释了大型文本,这导致了
text
SQL数据类型。将执行相同的操作。提供一个自定义SQLServerDialogue,将文本lob映射到varchar(max)可能也可以,但还没有尝试。@aycanadal,如果您没有找到答案,请检查:我没有投反对票,但我知道原因。varchar(最大值)。。“max”不是数字的占位符(其中有1337个字符)。。varchar(max)(无替换)是sql server中的一种数据类型。您没有回答这个问题,只是重复了其中的一部分。这并没有对现有答案提供任何改进,它的@Lob和columnDefinition都具有相同的功能,columnDefinition的使用不必要地破坏了可移植性。