Одно из моих объектов 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.