Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将枚举类型MySQL映射到Hibernate实体枚举的架构验证异常_Java_Mysql_Spring_Hibernate_Enums - Fatal编程技术网

Java 将枚举类型MySQL映射到Hibernate实体枚举的架构验证异常

Java 将枚举类型MySQL映射到Hibernate实体枚举的架构验证异常,java,mysql,spring,hibernate,enums,Java,Mysql,Spring,Hibernate,Enums,我目前在尝试将MYSQL枚举类型映射到Hibernate JPA枚举类型时遇到了这个问题。我得到一个模式验证错误。 我有一个简单的Java枚举: public enum Gender { MALE, FEMALE } MySQL表中对应的列定义为: `gender` enum('MALE','FEMALE') DEFAULT NULL, 此特定属性的实体类中的注释为: @Enumerated(EnumType.STRING) @Column(name = "gen

我目前在尝试将MYSQL枚举类型映射到Hibernate JPA枚举类型时遇到了这个问题。我得到一个模式验证错误。 我有一个简单的Java枚举:

public enum Gender {
    MALE,
    FEMALE
}
MySQL表中对应的列定义为:

`gender` enum('MALE','FEMALE') DEFAULT NULL,
此特定属性的实体类中的注释为:

   @Enumerated(EnumType.STRING)
   @Column(name = "gender", columnDefinition="enum('MALE','FEMALE')")
   private Gender gender;
我得到一个错误,如下所示:

架构验证:列[性别]中遇到错误的列类型 在表[
..
]中;找到[枚举(类型#字符)],但应为 [
enum('MALE','FEMALE')
(Types#VARCHAR)]

我已尝试在@Column annotation中不使用columnDefinition,错误为:

架构验证:中的列[SEXT]中遇到错误的列类型 表[
..
];找到[enum(Types#CHAR)],但应为[varchar(255) (类型#VARCHAR)]

我还尝试按照以下说明编写自己的转换器: 但这也没用

有什么想法吗


注意:当我使用EclipseLink时,对于相同的DB定义,我的实体没有任何问题,也没有在@Column中明确定义我的columnDefinition。当我移除EclipseLink时,我开始面对这个问题。该项目现在使用Spring数据JPA。正在使用Hibernate Core 5.3.14。

如果您根本不使用@Column注释怎么办?如果您不需要数据库中的枚举值作为字符串,可以使用EnumType.ORDINAL而不是EnumType.Strings如果我根本不使用@Column表示法,这是架构验证错误:找到[enum(Types#CHAR)],但预期为[varchar(255)(类型#VARCHAR)]现在,我不想改变cloumn在DB中的定义方式。哦,问题是列已经创建,并且它与您的代码不匹配?如果您根本不使用@column注释怎么办?如果您不需要数据库中的枚举值作为字符串,您可以使用EnumType.ORDINAL而不是EnumType.STRINGIf我不使用@column这就是模式验证错误:找到[enum(Types#CHAR)],但现在需要[varchar(255)(Types#varchar)],我不想更改cloumn在数据库中的定义方式。哦,问题是列已经创建,并且它与代码不匹配?