Проблемы с Hibernates hbm2ddl.auto = validate и текстовые типы MySQL - PullRequest
5 голосов
/ 10 мая 2011

Я попытался включить hbm2ddl.auto = validate для проекта, который я унаследовал. Теперь я получаю много неправильных исключений типа столбца для свойств String, которые сопоставляются либо с текстом, либо со средним текстом (база данных MySQL).

Отображение:

@Column(name = "DESCRIPTION", nullable = false, length = 65535)
@Length(max = 65535)
@NotNull
public String getDescription() {
    return this.description;
} 

И тип данных в БД - это «текст» (utf8_general_ci).

Я думал, что это должно быть правильное отображение, но Hibernate жалуется, что нашел текст, но ожидал длинного текста.

Я проверил конфигурацию спящего режима, и не было задано диалоговое окно. Я добавил

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>

но это, похоже, не имеет значения.

Я знаю, что могу добавить columnDefinition = "text" к отображению, но я должен был бы сделать это во многих местах, и ИМХО, сопоставление уже должно быть правильным. Так что же не так? Есть идеи?

Спасибо

1 Ответ

8 голосов
/ 01 сентября 2011

Вы должны добавить columnDefinition к аннотации @Column, например:

@Column(name = "DESCRIPTION", nullable = false, length = 65535, columnDefinition="TEXT")
...