已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
26天前关闭
Improve this question
我有如下的hibernate字段:
@Column(name = MY_COLUMN)
public Long myColumn;
DB2数据库中的MY_COLUMN
列当前是这样定义的:
ALTER TABLE MY_TABLE
ADD MY_COLUMN BIGINT;
结果是这个MY_COLUMN
字段应该被定义为DECIMAL(4,1)
,因此我必须相应地更新DB和JPA字段Map中的该列。
什么是正确的/最安全的方法来做到这一点?
1.首先更新DB,然后更新JPAMap
1.首先更新JPAMap,然后更新DB
- 请注意:我可以立即更新JPAMap的代码,但是要更改DB列,我需要让其他人审查和执行该命令,这会引入一些延迟时间。
我在想:
- 如果JPA首先更新,代码是否会被破坏,直到DB列被更改?
- 在将JPAMap的更改推送到远程存储库之前,我应该等到DB列更新吗?
- 在两者都改变之前,它是否一定会被打破一段时间?
- 是否取决于所涉及的数据库?
提前感谢任何洞察力。
1条答案
按热度按时间jgwigjjp1#
您是否使用Flyway或其他数据库迁移工具?
要做的是,IMO,用SQL修改数据库,然后修改JPA实体。
如果您使用例如。Flyway,您可以将这两个步骤合并结合起来,并在应用程序的下一次启动时自动执行。没有什么是这样破碎的。
如果您不使用数据库迁移工具,则需要准备SQL语句,仅为用户关闭应用程序,使用新实体发布新代码并执行SQL。但我不建议这么做。如果您这样做,请创建备份。