hibernate Spring Jpa -需要在现有列中使用更长的字符串,而无需重新创建模式

vwkv1x7d  于 2023-01-05  发布在  Spring
关注(0)|答案(1)|浏览(106)

我一直在使用一个实体,例如Foo,定义为

@Entity
public class Foo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    String name;

    String description;
    
    // etc...
}

而且我已经在数据库中保存了一些数据。
现在出现了需要更长的描述,所以我尝试修改

String description;

@Column(columnDefinition = "TEXT")
String description = "";

但是这些更改并没有反映在实际的模式中,我知道即使设置了spring.jpa.hibernate.ddl-auto=update,jpa hib也不会更新这些更改。
因此,我想要的是保留已经存在的记录,但修改列定义以允许插入具有更长description字段的新记录。
什么是最好的方法呢?
我已经做了一些调查,并提出了像Flyway这样的解决方案,但我应该以什么样的方式使用它呢?用下面的命令添加一个迁移脚本吗?

ALTER TABLE Foo MODIFY description TEXT;

然后,我是否还应该在Java类中添加@Column(columnDefinition = "TEXT")
任何帮助将不胜感激!

wooyq4lh

wooyq4lh1#

我猜底层的数据库是MySQL?什么类型是描述字段目前?因为在MySQL 5.0.3之后的VARCHAR字段可以有多达65.535的字符大小相同的文本. VARCHAR vs TEXT所以你可能甚至不需要改变类型只是字段的最大长度.为此我会使用Flyway,这将确保在代码更改生效的同时应用数据库更改。

相关问题