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

2024-05-30

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

多个表中有多个列,其中数据库列定义与实体中的声明发生了变化。喜欢

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

and

'mycolumn' bigint(20) 不为 null 默认 0

在 MySQL 中。

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


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

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

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

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

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

See:
需要澄清 hibernate.hbm2ddl.auto=update https://stackoverflow.com/questions/23533409/need-clarity-on-hibernate-hbm2ddl-auto-update

and
Hibernate hbm2ddl.auto 可能的值以及它们的作用是什么? https://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible-values-and-what-they-do?lq=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate hbm2ddl.auto=update 不更新 MySQL 中的列定义 的相关文章

随机推荐