为了从主机数据库表中删除几个特殊字符到我的应用程序中,我必须创建自己的数据类型。
@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中指定列长度?