使用Hibernate注释的文本字段

时间:2009-08-15 04:51:22

标签: hibernate annotations blob

我在设置String类型时遇到问题,就像

一样
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,任何想法都会受到赞赏!

2 个答案:

答案 0 :(得分:82)

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

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

@Column(name="DESC", columnDefinition="TEXT")

答案 1 :(得分:1)

有一种方法可以设置" String"的默认映射。要设置为" text"输入数据库。

将以下文件保存在包含实体的包中。请更改包名称。

这将设置所有" String"输入字段到" text"在db中输入指定的包。

package-info.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;