Hibernate hbm2ddl.auto=update在MySQL中不会更新列定义。

31

我正在尝试使用hbm2ddl.auto = update更新现有表格。

在几个表格的几个列中,数据库列定义与实体声明中的不同。例如:

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

在MySQL中,'mycolumn' bigint(20)非空默认为0。

为什么hbm2ddl不更新这样的内容?是否可以强制进行此类更新?我想让hbm2ddl删除列的默认值并更改类型的长度。

1个回答

51

hibernate.hbm2ddl.auto" value="update不会修改现有的表列定义。 经过一些测试,我发现:

hibernate.hbm2ddl.auto" value="update将添加一个数据库列,该列不存在。

hibernate.hbm2ddl.auto" value="update不会删除已从实体中删除/不再存在的数据库列。

hibernate.hbm2ddl.auto" value="update不会修改已创建的数据库列。

您需要备份表数据,删除它并重新启动应用程序,以使该表的模式与实体同步。 然后重新加载数据。

参见:
需要明确hibernate.hbm2ddl.auto = update


Hibernate hbm2ddl.auto可能的值及其作用?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接