указание длины столбца для столбцов @Type (type = xxx) - PullRequest
1 голос
/ 18 октября 2011

Чтобы удалить несколько специальных символов из таблиц базы данных хоста в мое приложение, мне пришлось создать свой собственный тип данных.

@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?

1 Ответ

1 голос
/ 18 октября 2011

Попробуйте установить значение Types.VARCHAR

...