我们刚刚将 Spring Boot 应用程序升级到 Spring Boot 3.2,其中包括 Hibernate 的小版本升级。小版本升级对我们来说是一个重大变化:
“在 MySQL 上,枚举现在默认使用 ENUM 数据类型存储”
这会破坏我们的应用程序并出现以下错误:
Schema-validation: wrong column type encountered in column [column_name] in table [my_table]; found [varchar (Types#VARCHAR)], but expecting [enum ('vak1', 'val2') (Types#ENUM)]
我是否可以将所有映射的定义更改回来,以便我的架构仍会生成 varchar 而不是枚举?
我在 Hibernate 或 JPA 数据文档中找不到与此相关的任何内容。
从你的问题中我了解到你之前是这样使用的:
@Enumerated(EnumType.STRING)
private ColumnName columnName;
如果你想在数据库表中保留VARCHAR列,你需要添加这样的注释:
@Column(name = "columnName", columnDefinition = "VARCHAR(30)")