I'm trying to update existing table with hbm2ddl.auto = update.
There is several columns in several tables where database column definitions changes from declaration in entities. Like
@Column(name="mycolumn", nullable=false, length=10)
private Long mycolumn;
and
'mycolumn' bigint(20) not null default 0
in MySQL.
Why hbm2ddl doesn't update such things? And is it possible to force such update? I want to say hbm2ddl to remove default value of column and change length of type.
hibernate.hbm2ddl.auto" value="update
won't modify existing table column definitions. Doing some testing I found that:
hibernate.hbm2ddl.auto" value="update
will add a db column that doesn't already exist.
hibernate.hbm2ddl.auto" value="update
will not delete a db column that is removed/no longer in your entity.
hibernate.hbm2ddl.auto" value="update
will not modify a db column that has already been created.
You'll need to backup the table data, drop it and restart your application to get that table's schema back in sync with your entity. Then reload your data.
See:
Need clarity on hibernate.hbm2ddl.auto=update
and
Hibernate hbm2ddl.auto possible values and what they do?