Одно из моих объектов Machinery
имеет свойство String
, называемое notes
. JPA 2-Hibernate генерирует схему для меня, в моем случае RDBMS - это MySQL.
notes
создается как столбец VARCHAR(255)
, который является правильным.
Пользователи начинают создавать записи, и все работает отлично, но затем некоторые пользователи получают печально известную ошибку Data too long for column "notes"
.
В этом поле не хватает места для комментариев к машинам! Без проблем. Позвольте изменить схему!
Итак, я открываю класс сущности и меняю свое свойство на:
@Column(length=1000000)
@Lob
private String notes;
Кстати, мой persistence.xml
объявляет:
<property name="hibernate.hbm2ddl.auto" value="update" />
После перезагрузки приложения я рад, что Hibernate меняет мой столбец notes
на LONGTEXT
(это достаточно для меня).
Итак, я сначала попытаюсь использовать мое приложение для создания новой записи с длинными отметками, и я все еще являюсь ошибкой "Данные слишком долго", хотя теперь это LONGTEXT
.
Затем я пытаюсь выполнить raw INSERT
из командной строки MySQL, и он работает! Я могу вставить длинные заметки в этом поле!
Наконец, я DROP
моя локальная/промежуточная схема DB и измените hibernate.hbm2ddl.auto
в persistence.xml
на create
, и она работает.
По-прежнему ли JPA считает, что это a VARCHAR
? Есть ли у него какой-то кеш или какое-то место, где он хранит информацию о схеме?
Я не могу отказаться от своего производства db, очевидно. Итак, что я могу сделать для reset или изменить тип столбца?
Я использую JBossAS7 JPA 2-Hibernate.