Wildfly 32:模式验证错误:找到类型#VARCHAR,但需要类型#ENUM

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

WIldfly 32 出现问题。

我在一个可启动的 jar 中构建了我的 Wildfly 环境。在我用 galleon 将 Wildfly 28 更新为 32 后,当我构建并尝试运行它时,Wildfly 开始出现错误。发生的一个错误是由 Hibernate

引起的

SchemaManagementException: wrong column type in column [my_column] in table [`my_entity`]; found [varchar (Types#VARCHAR)], but expecting [`varchar` (Types#ENUM)]

我的实体看起来像这样:


@Entity
@Table(name = "my_entity")
public class MyEntity {

  public enum MyEnum {
    [...]
  }
  [...]
  @NotNull
  @Enumerated(EnumType.STRING)
  @Column(name = "my_column", columnDefinition = "varchar")
  private MyEnum myColumn;
  [...]

而在我的 Mysql 数据库中,我定义了 my_column 如下:

[...]
`my_column` VARCHAR(50) NOT NULL,
[...]

在寻找解决方案时,人们建议使用

columnDefinition = "varchar"
注释中的
@Column
。我尝试过,但它对我不起作用。它只是以某种方式影响名称,但不影响类型:如前所述。我认为通过更改 columnDefinition 我可以更改预期的类型。但预期的类型仍然是 Types#ENUM。
其他建议是为此枚举编写一个自己的特定转换器,我真的想避免这种情况,因为我的项目中有大量枚举,并且我想避免为每个枚举编写一个转换器。

我错过了什么还是有其他解决方案?

mysql hibernate validation schema wildfly
1个回答
0
投票

[`varchar` (Types#ENUM)]

所以在这个例子中是:

@JdbcTypeCode(Types.VARCHAR)

© www.soinside.com 2019 - 2024. All rights reserved.