Hibernate hbm2ddl.auto = update не обновляет определения столбцов в MySQL

Я пытаюсь обновить существующую таблицу с помощью hbm2ddl.auto = update.

В нескольких таблицах имеется несколько столбцов, где определения столбца базы данных изменяются от объявления в сущности. Как

@Column(name="mycolumn", nullable=false, length=10)
private Long mycolumn;

и

'mycolumn' bigint (20) not null default 0

в MySQL.

Почему hbm2ddl не обновляет такие вещи? И можно ли заставить такое обновление? Я хочу сказать hbm2ddl, чтобы удалить значение по умолчанию столбца и изменить длину типа.

Ответы

Ответ 1

hibernate.hbm2ddl.auto" value="update не будет изменять существующие определения столбцов таблицы. Проведя некоторое тестирование, я обнаружил, что:

hibernate.hbm2ddl.auto" value="update добавит столбец db, который еще не существует.

hibernate.hbm2ddl.auto" value="update не удалит столбца db, который удален/больше не находится в вашей сущности.

hibernate.hbm2ddl.auto" value="update не будет изменять уже созданный столбец db.

Вам нужно будет сделать резервную копию данных таблицы, отбросить ее и перезапустить приложение, чтобы синхронизировать эту схему таблицы с вашим объектом. Затем перезагрузите свои данные.

Смотрите:
Нужна ясность в hibernate.hbm2ddl.auto = update

и
 Hibernate hbm2ddl.auto возможные значения и что они делают?