53

我无法设置字符串的类型,就像

public void setTextDesc(String textDesc) {
    this.textDesc = textDesc;
}

@Column(name="DESC")
@Lob
public String getTextDesc() {
    return textDesc;
}

它没有用,我检查了mysql模式,它仍然是varchar(255),我也试过了,

@Column(name="DESC", length="9000")

或者

@Column(name="DESC")
@Type(type="text")

我正在尝试将类型设置为 TEXT,任何想法都将不胜感激!

4

2 回答 2

94

您说“我检查了 mysql 架构,它仍然是 varchar(255)”-您是否希望 Hibernate 自动更改您的数据库?它不会。即使您已经hibernate.hbm2ddl.auto设置,我也不相信 Hibernate 会改变现有的列定义。

如果您要生成新的数据库创建脚本,@Lob如果您没有明确指定长度(或者如果您指定长度小于 65536),则应生成“TEXT”类型列。您始终可以通过在@Column注释中显式声明类型来强制执行此操作,但请记住,这在数据库之间不可移植:

@Column(name="DESC", columnDefinition="TEXT")
于 2009-08-15T05:12:28.260 回答
3

有一种方法可以将“字符串”类型的默认映射设置为数据库中的“文本”类型。

将以下文件保存在您拥有实体的包中。请同时更改软件包名称。

这会将指定包的数据库中的所有“字符串”类型字段设置为“文本”类型。

包信息.java

@TypeDefs({
      @TypeDef(name="string",defaultForType=java.lang.String.class,typeClass=org.hibernate.type.TextType.class)
})

package com.package.app;

import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
于 2018-04-30T05:42:44.163 回答