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。其他建议是为此枚举编写一个自己的特定转换器,我真的想避免这种情况,因为我的项目中有大量枚举,并且我想避免为每个枚举编写一个转换器。
我错过了什么还是有其他解决方案?
[`varchar` (Types#ENUM)]
所以在这个例子中是:
@JdbcTypeCode(Types.VARCHAR)