我目前面临的问题,而试图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。
1条答案
按热度按时间pxy2qtax1#
我们遇到了同样的问题,我们只需要将列定义添加到Map中:
我们正在使用Hibernate
5.6.15
和Spring2.7.9