Чтобы удалить несколько специальных символов из таблиц базы данных хоста в мое приложение, мне пришлось создать свой собственный тип данных.
@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 }
. По сути, он перестраивает String после итерации массива char и отфильтровывает его по специальным символам.
public int[] sqlTypes() {
return new int[] { Types.CHAR };
}
Приложение работает отлично, но у меня проблема с запуском DBUnit
. Когда Hibernate создает таблицу в HSQLDB (у меня hibernate.hbm2ddl.auto
установлен на create-drop
), он создает столбец типа CHARACTER
с длиной, равной 1. Он игнорирует атрибут длины моего @column
, указанного 24 выше.
Есть ли способ указать длину столбца в этом scneraio?