我有以下休眠字段:
@Column(name = MY_COLUMN)
public Long myColumn;
DB2 数据库中的
MY_COLUMN
列当前定义如下:
ALTER TABLE MY_TABLE
ADD MY_COLUMN BIGINT;
事实证明,这个
MY_COLUMN
字段应该被定义为 DECIMAL(4,1)
,所以我必须在数据库和 JPA 字段映射中相应地更新该列。
正确/最安全的方法是什么?
请注意:我可以立即更新 JPA 映射的代码,但要更改 DB 列,我需要让其他人审查和执行 DDL,从而引入一些滞后时间。
我想知道的事情:
如果先更新JPA,代码会被破坏直到数据库列被更改吗?
我是否应该等到数据库列更新后再将 JPA 映射的更改推送到远程存储库?
在两者都改变之前,是否一定会在一段时间内被破坏?
这取决于涉及的数据类型吗?
预先感谢您的任何见解。
您使用 Flyway 或其他数据库迁移工具吗?
在我看来,正确的方法是使用 SQL 更改数据库,然后更改 JPA 实体。
如果您使用例如Flyway,您可以将这两个步骤结合起来,并在应用程序下次启动时自动执行。这样就不会破坏任何东西。
如果您不使用数据库迁移工具,则需要准备SQL语句,仅为用户下架应用程序,用新实体发布新代码并执行SQL。 但我不推荐这样做。如果这样做,请创建备份。