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

时间:2013-04-12 18:26:32

标签: hibernate hbm2ddl

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

在几个表中有几列,其中数据库列定义从实体中的声明变化。像

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

  

'mycolumn'bigint(20)not null default 0

在MySQL中

为什么hbm2ddl不更新这样的东西?是否有可能强制进行此类更新? 我想说hbm2ddl删除列的默认值并更改类型的长度。

1 个答案:

答案 0 :(得分:38)

hibernate.hbm2ddl.auto" value="update无法修改现有的表列定义。做一些测试我发现:

hibernate.hbm2ddl.auto" value="update将添加一个尚不存在的db列。

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

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

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

见:
Need clarity on hibernate.hbm2ddl.auto=update


 Hibernate hbm2ddl.auto possible values and what they do?