【问题标题】:Hibernate hbm2ddl.auto=update doesn't update column definitions in MySQLHibernate hbm2ddl.auto=update 不更新 MySQL 中的列定义
【发布时间】:2013-04-05 09:28:05
【问题描述】:

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

多个表中有多个列,其中数据库列定义与实体中的声明不同。喜欢

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

'mycolumn' bigint(20) not null default 0

在 MySQL 中。

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

【问题讨论】:

    标签: hibernate hbm2ddl


    【解决方案1】:

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

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

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

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

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

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


    Hibernate hbm2ddl.auto possible values and what they do?

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2016-01-31
      • 1970-01-01
      • 2020-03-25
      • 2010-10-22
      • 2011-12-09
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多