为@Type(type = xxx)的列指定列长度

时间:2011-10-17 20:16:29

标签: hibernate annotations hsqldb dbunit

为了从主机数据库表中删除几个特殊字符到我的应用程序中,我必须创建自己的数据类型。

@Column(name="LAST_UPDATED_BY", nullable=false, length=24)
@Type(type="com.xx.CleanedString")
public String getLastUpdatedBy() {
    return this.lastUpdatedBy;
}
public void setLastUpdatedBy(String lastUpdatedBy) {
    this.lastUpdatedBy = lastUpdatedBy;
}

CleanedString实施UserType,其sqlTypes()被定义为int[] { Types.CHAR }。基本上它在迭代char数组并将其过滤掉特殊字符后重建String。

public int[] sqlTypes() {
    return new int[] { Types.CHAR };
}

应用程序运行正常但我在运行DBUnit时遇到问题。当Hibernate在HSQLDB中创建表时(我将hibernate.hbm2ddl.auto设置为create-drop),它正在创建一个类型为CHARACTER的列,其长度为1.它忽略了my {的length属性{1}}在上面指定了24。

有没有办法在此scneraio中指定列长度?

1 个答案:

答案 0 :(得分:1)

尝试将其设置为Types.VARCHAR