我正在尝试使用hbm2ddl.auto = update更新现有表格。
在几个表格的几个列中,数据库列定义与实体声明中的不同。例如:
@Column(name="mycolumn", nullable=false, length=10)
private Long mycolumn;
在MySQL中,'mycolumn' bigint(20)非空默认为0。
为什么hbm2ddl不更新这样的内容?是否可以强制进行此类更新?我想让hbm2ddl删除列的默认值并更改类型的长度。
我正在尝试使用hbm2ddl.auto = update更新现有表格。
在几个表格的几个列中,数据库列定义与实体声明中的不同。例如:
@Column(name="mycolumn", nullable=false, length=10)
private Long mycolumn;
在MySQL中,'mycolumn' bigint(20)非空默认为0。
为什么hbm2ddl不更新这样的内容?是否可以强制进行此类更新?我想让hbm2ddl删除列的默认值并更改类型的长度。
hibernate.hbm2ddl.auto" value="update
不会修改现有的表列定义。 经过一些测试,我发现:
hibernate.hbm2ddl.auto" value="update
将添加一个数据库列,该列不存在。
hibernate.hbm2ddl.auto" value="update
不会删除已从实体中删除/不再存在的数据库列。
hibernate.hbm2ddl.auto" value="update
不会修改已创建的数据库列。
您需要备份表数据,删除它并重新启动应用程序,以使该表的模式与实体同步。 然后重新加载数据。