我可以将 EnumType.String 的列定义更改回 VARCHAR 而不是 ENUM 吗?

问题描述 投票:0回答:1

我们刚刚将 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 数据文档中找不到与此相关的任何内容。

mysql hibernate hibernate-mapping
1个回答
0
投票

从你的问题中我了解到你之前是这样使用的:

@Enumerated(EnumType.STRING)
private ColumnName columnName;

如果你想在数据库表中保留VARCHAR列,你需要添加这样的注释:

@Column(name = "columnName", columnDefinition = "VARCHAR(30)")
© www.soinside.com 2019 - 2024. All rights reserved.