将ENUM类型MySQLMap到Hibernate实体枚举的架构验证异常

pzfprimi  于 2023-10-23  发布在  Mysql
关注(0)|答案(1)|浏览(120)

我目前面临的问题,而试图MapMYSQL枚举类型到我的Hibernate JPA枚举类型。我得到一个架构验证错误。在Java中有一个简单的枚举:

public enum Gender {
    MALE,
    FEMALE
}

MySQL Table中对应的列定义是:

`gender` enum('MALE','FEMALE') DEFAULT NULL,

Entity类中针对此特定属性的注解为:

@Enumerated(EnumType.STRING)
   @Column(name = "gender", columnDefinition="enum('MALE','FEMALE')")
   private Gender gender;

我得到一个错误:
模式验证:在表[...]的列[gender]中遇到错误的列类型;找到[enum(Types#CHAR)],但需要[enum('MALE','FEMALE')(Types#VARCHAR)]
我试过在@Column注解中不使用columnDefinition,错误是:
模式验证:在表[...]的列[gender]中遇到错误的列类型;找到[enum(Types#CHAR)],但需要[varchar(255)(Types#VARCHAR)]
我也试着按照https://thoughts-on-java.org/hibernate-enum-mappings/#customizedMapping中的说明编写自己的转换器,但这也没有帮助。
有什么想法吗?
注意:当我使用BullseLink时,对于相同的DB定义,我的实体没有问题,并且没有在@Column中显式定义我的columnDefinition。我开始面对这个问题时,我删除了AdverseLink。该项目现在使用Spring Data JPA。使用Hibernate Core 5.3.14。

pxy2qtax

pxy2qtax1#

我们遇到了同样的问题,我们只需要将列定义添加到Map中:

@Basic
    @Column(name = "stripe_setup_intent_status", columnDefinition = "enum('SUCCESS', 'FAILED', 'WAITING')")
    @Enumerated(EnumType.STRING)
    private SetupIntentStatus stripeSetupIntentStatus;

我们正在使用Hibernate 5.6.15和Spring 2.7.9

相关问题