1

hibernate.hbm2ddl.auto用来创建我的表。

像这样创建我的专栏:

@Column(name = "foo", length = 8000)
private String foo;

这将创建一个表和字段:varchar(8000)

我需要的是,我可以string在那里节省超过 8000 元。像20000或更多。

更改length高于时8000,它不会创建表。

手动更改字段时,它会说:

The size (20000) given to the column 'foo' exceeds the maximum allowed for 
any data type (8000).
4

2 回答 2

4

建议对如此大的字符串列使用 Clob

@Lob 表示属性应该被持久化在 Blob 或 Clob 中,具体取决于属性类型:java.sql.Clob、Character[]、char[] 和 java.lang.String 将持久化在 Clob 中。java.sql.Blob、Byte[]、byte[] 和可序列化类型将被持久化在一个 Blob 中。

@Lob
public String getFullText() {
    return fullText;
}

@Lob 
public byte[] getFullCode() {
    return fullCode;
}

如果属性类型实现了 java.io.Serializable 并且不是基本类型,并且如果属性没有使用@Lob 注解,则使用 Hibernate 可序列化类型。

在此处查看示例

http://tonyyan.wordpress.com/2008/10/28/clob-and-blob-saved-through-hibernate/

于 2012-10-08T11:40:51.953 回答
2

您可以尝试使用 columnDefinition="LONGVARCHAR" 而不是 length = 8000。如果与 org.hibernate.dialect.SQLServer2005Dialect 一起使用,它应该被转换为 varchar(max),它能够支持长度最大为 2G 的字符串。

于 2012-10-08T07:31:12.313 回答